我正在设计高通量系统,我将有几个生产商。
我的主题将被分区。生产者将发送记录作为键值对。
密钥将用于分区数据。
将在消费者组中组织消费者(他们将被分配相同的组ID,以便他们可以同时使用来自同一主题但来自不同分区的消息)。
Kafka保证单个分区内的消息顺序。
将为消费者分配他们公平的分区份额。
唯一让我担心的是,我的分区密钥不会以循环方式分发消息,而某些分区可能比其他分区更繁忙。
问:可能不均匀的分区会以任何方式影响Kafka集群的性能吗?有没有危险信号?
我知道有些消费者会有更多的工作要做,但这不是我主要关心的问题。 任何有关此事的帮助将不胜感激。
答案 0 :(得分:2)
对于之前的好答案,我想补充一点,即使复制因素也会对您的用例产生影响。
繁忙分区的跟随节点可能是其他分区的领导节点,因此除了从繁忙分区复制大量消息之外,它们还必须处理来自生产者的其领导分区的传入消息。因此,即使这些节点也会非常忙于处理繁重的负载。
答案 1 :(得分:1)
可能不均匀的分区会以任何方式影响Kafka群集的性能吗?
每个分区都有一个服务器充当“领导者”,零个或多个服务器充当“追随者”。领导者处理分区的所有读取和写入请求,而关注者被动地复制领导者。因此,如果您的生产者主要向一个分区发送消息,它将为该分区的领导者提供大量工作。如果消息泛滥到一个分区,它将滞后于写入,从而减慢节点。
有红旗吗?
引自here:
Kafka使用Yammer Metrics在服务器和客户端中进行指标报告。这可以配置为使用可插拔统计报告器报告统计数据以连接到您的监控系统。 查看可用指标的最简单方法是启动jconsole并将其指向正在运行的kafka客户端或服务器;这将允许使用JMX浏览所有指标。
可能有一些指标可以反映这种减速问题。 :
请求在请求队列中等待的时间
领导
处理请求的时间请求等待关注者的时间
请求在响应队列中等待的时间