2017-08-30 110 views
1

我正在设计高吞吐量系统,我要有几个生产者。分区间消息的不均匀分布对Kafka集群的性能有不良影响吗?

我的主题将被分区。制作人将以键值对的形式发送记录。

键将用于分区数据。

消费者将组织在消费者群体中(他们将被分配相同的群组ID,以便他们可以同时消费来自同一主题的消息,但来自不同的分区)。

卡夫卡保证单个分区内的消息顺序。

消费者将被分配他们公平份额的分区。

唯一令我担心的是,我的分区密钥不会以循环方式分发消息,有些分区可能比其他分区更繁忙。

问:可能存在不均匀分区会以任何方式影响Kafka集群的性能?有没有红旗?

我知道有些消费者会有更多的工作要做,但那不是我最关心的问题。 在这个问题上的任何帮助将不胜感激。

回答

1

不均匀分区是否会以任何方式影响Kafka集群的性能?

每个分区有一个服务器充当“领导者”,零个或多个服务器充当“追随者”。领导处理分区的所有读取和写入请求,而追随者被动地复制领导。因此,如果您的制作人员主要将消息发送到一个分区,那么它将为此分区的负责人提供很多工作。如果它是消息泛滥到一个分区,它将滞后写入,从而减慢节点速度。

有没有红旗?

here报价:

卡夫卡使用Yammer的指标度量标准的服务器和客户端两个报告。这可以配置为使用可插式统计记录器来报告统计信息,以便连接到您的监控系统。 查看可用指标的最简单方法是启动jconsole并将其指向正在运行的kafka客户端或服务器;这将允许浏览JMX的所有指标。

也许有些指标可能反映出这种减缓问题。:

时间请求队列

时间的请求等待请求在前导

时间的请求等待从动

时间处理在响应队列中的请求等待

2

对于之前的良好答案,我想补充一点,即使复制因素可能会对您产生影响r用例。

繁忙分区的追随者节点可能是其他分区的引导节点,因此除了复制繁忙分区中的大量消息外,他们还必须处理来自生产者的引导分区的传入消息。所以即使这些节点真的会忙于处理沉重的负载。