我的理解是,Kafka制作人向Kafka经纪人群发送消息。我的问题是,Kafka制作人在网络分割期间的行为是什么?如果分区太长(并且卷太高),最终消息会丢失吗?
此外,如果系统在分区期间崩溃,Kafka队列中的所有消息都会丢失吗?
根据路德的评论回答。根据链接中的视频,它们不支持在发生分区(或代理中断)时溢出到磁盘。有人提到一个“Go”客户,他做了一件别人写的事情。目前没有计划开发这种生产能力;他们目前的重点是集群和消费者。
视频中提到,这不是他们的优先事项,至少出于某种原因,他们对“滞后数据”不感兴趣。我想Kafaka的很多用例都是基于实时的,所以如果一个制作人断开了几个小时的连接,那么获得几个小时前的数据突发将是“奇怪的”。
我猜这是有道理的,因为这样一来,你的消费者就必须以某种方式处理那些滞后的数据(也就是说,这是一个应用程序问题)。
我正在创建一个系统,其中前端服务将消息推送到Kafka请求主题,并为一些下游后端消费者(实际上是一个最终推送回Kafka的复杂系统)监听另一个响应主题,以处理请求消息并最终推进到“回应”话题。 我试图找出最优雅的方法来确保消费者监听适当的分区并收到响应,并且后端推送到前端消费者正在监听的分区。我们总是需要确保响应到达产生初始消息的同一个消费者。 到目前为止,我有两种解决方案,但都不是特别令人满意的
来自Kafka常见问题页面 在Kafka生产者中,可以指定分区键来指示消息的目标分区。默认情况下,基于散列的分区器用于确定给定键的分区id 因此,具有特定密钥的所有消息将始终转到主题中的同一分区: 消费者如何知道生产者写入了哪个分区,从而可以直接从该分区进行消费 如果生产者多于分区,并且多个生产者正在写入同一分区,那么偏移量是如何排序的,以便消费者可以使用来自特定生产者的消息
我正在使用Spring Kafka 2.3.9编写一个Kafka制作人,该制作人假设向一个主题发布大约200000条消息。例如,我有一个从数据库中提取的200000个对象的列表,我想将这些对象的json消息发布到一个主题。 我写的制作人在发布1000条消息方面做得很好。然后它创建了一些空指针错误(我已经包括了下面的屏幕截图)。 在调试过程中,我发现Kafka Producer网络线程的数量非常高。
我们的生产环境中出现了随机的和: 我们偶尔会在我的生产者日志中得到这个异常: 主题:XXXXXX:5608 ms的过期记录自批量创建加上逗留时间以来已经过去。 此类错误消息中的毫秒数不断变化。有时是5秒,有时是13秒! 我们很少能得到: 集群由3个经纪人和3个动物园管理员组成。生产者服务器和Kafka集群在同一个网络中。 我在打同步电话。有一个web服务,多个用户请求调用它来发送数据。Kafka
“发送是异步的,一旦记录存储在等待发送的记录缓冲区中,此方法将立即返回。这允许并行发送许多记录,而不会阻塞等待每个记录之后的响应。“ 我只是想知道这些记录是如何并行发送的?如果我有3个代理,并且在同一主题下的每个代理上有3个分区,Kafka生产者会将记录并行地发送到9个分区吗?或者制作人只是并行地向3个经纪人发送唱片?生产者如何以平行的方式工作?
我们从每个kafka机器的中得到了许多错误(集群中有kafka) 根据我的理解,每个主题都由一个或多个经纪人服务--一个是领导者,其余的经纪人是追随者。