当前位置: 首页 > 知识库问答 >
问题:

分区间消息分布不均匀是否会对Kafka集群的性能产生不良影响?

红弘盛
2023-03-14

我正在设计高通量系统,在那里我将有几个生产者。

我的主题将被分割。生产者将发送记录作为键值对。

键将用于对数据进行分区。

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

Kafka保证消息在单个分区中的顺序。

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

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

问:不均匀的分区会以任何方式影响Kafka集群的性能吗?有危险信号吗?

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

共有2个答案

席成仁
2023-03-14

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

每个分区都有一个充当“领导者”的服务器和零个或多个充当“追随者”的服务器。领导者处理分区的所有读写请求,而追随者被动地复制领导者。因此,如果您的生产者将大部分消息发送到一个分区,则会给该分区的领导者带来大量工作。如果是消息泛洪到一个分区,它会延迟写入,减慢节点。

有危险信号吗?

引述如下:

Kafka在服务器和客户端中使用Yammer指标进行指标报告。这可以配置为使用可插拔统计报告器报告统计数据,以连接到您的监控系统。查看可用度量的最简单方法是启动j控制台,并将其指向运行中的kafka客户端或服务器;这将允许使用JMX浏览所有度量。

也许有一些指标可以反映这个减速问题。:

请求在请求队列中等待的时间

在主管处处理请求的时间

请求等待跟随者的时间

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

拓拔欣嘉
2023-03-14

对于前面的好答案,我想补充一点,就是复制因素也会对您的用例产生影响。

繁忙分区的跟随节点可以是其他分区的引导节点,因此除了从繁忙分区复制大量消息外,它们还必须为其引导分区处理来自生产者的传入消息。因此,即使是这些节点也会非常繁忙,无法处理繁重的负载。

 类似资料:
  • 我有一个有几个消费者的消费群体。每个使用者被分配到一组分区。消费者何时轮询选择了已使用分区的消息?它是在消费者端完成的,还是Kafka服务器决定使用哪个分区? 我的一些分区有很多消息,但有些分区没有或几乎没有。但我仍然需要我的消费者平等地使用分配给它的每个分区。因此,我需要我的消费者快速遍历分区,最好从每个分配的分区轮询x条消息。 我在用https://github.com/appsignal/r

  • 我们在AWS上运行16个节点kafka集群,每个节点是m4. xLargeEC2实例,具有2TB EBS(ST1)磁盘。Kafka版本0.10.1.0,目前我们有大约100个主题。一些繁忙的话题每天会有大约20亿个事件,一些低量的话题每天只有数千个。 我们的大多数主题在生成消息时使用UUID作为分区键,因此分区分布相当均匀。 我们有相当多的消费者使用消费群体从这个集群消费。每个使用者都有一个唯一的

  • 0.1-0.2:********** 0.2-0.3:******** 0.3-0.4:********* 0.5-0.6:********* 0.6-0.7:********* 0.7-0.8:********* 0.4-0.5:********* 0.5-0.6:********* 0.6-0.7:********* 0.1-0.2:********* 0.2-0.3:********* 0.

  • 我想有一个主题与10个分区。我使用的是Kafka的默认配置。我用帮助器脚本创建了一个有10个解析的主题,现在我将为它生成消息。 问题是,消费者似乎只有5个分区可以从中获取数据。 让我们更详细地描述一下。 我知道每个分区需要一个使用者线程。我希望能够提交每个分区的偏移量,这是可能的,只有当我有一个线程每个消费连接器每个分区(我是使用高级消费)。 当我这样做10次时,我有10个消费者,每个分区每个线程

  • 我正在使用Kafka Producer和RoundRobin分区器来处理一个有12个分区的主题。 代码可在此处找到https://github.com/apache/kafka/blob/2.8/clients/src/main/java/org/apache/kafka/clients/producer/RoundRobinPartitioner.java 我面临的问题是,这个分区程序让分区正确