关于Kafka Consumer 与 Partitions

 

Consumers and Consumer Groups

假设我们有一个应用程序需要从Kafka主题中读取消息,对它们运行一些简单的验证,并将结果写入另一个数据存储中。 因此,我们需要将创建一个Consumer对象,订阅相应的主题,并开始接收消息,验证它们并编写结果。 这可能会有一段时间,但如果写入主题的速率超过应用程序验证它们的速率怎么办? 如果您仅限于单个消费者阅读和处理数据,您的应用程序可能会滞后得越来越多,无法跟上传入消息的速度。 显然,需要从主题中扩展消费。 就像多个生产者可以写入同一主题一样,我们需要允许多个消费者从同一主题中读取,在它们之间分割数据。

当多个Consumer订阅同一个主题并属于同一个Consumer Groups时,该组中的每个Consumer 将从该主题中的不同分区中接收消息。

4个分区,1个Consumer4个分区,2个Consumer
testtest
4个分区,4个Consumer4个分区,5个Consumer
testtest

Kafka中扩展topic 数据的消费的方式主要是通过增加其partition数量,以便于设定更多的consumer来并行消费。

Kafka Consumer通常会进行高延迟操作,例如写入数据库或对数据进行耗时的计算。 在这些情况下,单个Consumer的消费速度可能跟不上数据流入主题的速率。
因此我们可以通过增加Kafka topic的分区数量,同时添加更多共享负载的consumer来进行扩展。

拥有多个分区的Kafka topic允许在负载增加时添加更多的Consumer,但当Consumer数目大于topic的分区数,多余的Consumer将会处于空闲状态。

  • 如果要确保应用程序获取topic中的所有消息,请确保应用程序具有自己的consumer group。

如果你的程序需要读取某个Kafka主题中的所有消息,那就给它指定一个独立的Consumer group。
如果你想扩展某个主题的消息消费速率,则在该消费程序所属的group中,增加新的consumer。

参考资料

Chapter 4. Kafka Consumers: Reading Data from Kafka

 

转载于:https://www.cnblogs.com/lestatzhang/p/10611306.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值