首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kafka主题不是为springboot使用者应用程序进行负载平衡。

Kafka主题不是为springboot使用者应用程序进行负载平衡。
EN

Stack Overflow用户
提问于 2021-07-07 13:25:21
回答 2查看 215关注 0票数 0

我是卡夫卡的新手,我想要帮助

我有一个主题XXXX,我有一些应用程序在使用这个主题,它们都在听同一个组的内容。

代码语言:javascript
复制
spring.cloud.stream.bindings.aaa_bbb.destination=XXXX
spring.cloud.stream.bindings.aaa_bbb.group=XXXX_group

主题XXXX只有一个分区。

向主题XXXX发送1000条消息,只有一个应用程序会消耗所有消息。

但是,当我向主题XXXX添加一个新的分区时,消息被划分为2个应用程序,而我仍然没有接收到任何应用程序。

我重复这个过程,并向主题XXXX添加一个新的分区,现在主题有3个分区,消息被划分为3个应用程序。

看起来它是每个消费者的一个分区。对我来说没什么意义或者我不明白。

是否有办法使这种负载平衡工作,而不必为每个使用者创建一个分区?

有人能向我解释一下这种关系是如何运作的吗?

EN

回答 2

Stack Overflow用户

发布于 2021-07-07 14:09:13

这是卡夫卡的基础--每个群体中只有一个消费者可以从一个分区中消费。主题/分区是一个简单的日志,它不像JMS或RabbitMQ中的队列。

Kafka只为每个组/主题/分区维护一个简单的当前提交偏移量。

添加并发性的唯一方法是增加分区。

票数 0
EN

Stack Overflow用户

发布于 2021-07-07 14:18:52

要增加吞吐量,您必须有多个分区。当事件被写入日志时,事件的ID将确定消息将传递到哪个分区。

Kafka只保证在ID上订购,而不是对整个日志进行排序。

我通常建议使用多个分区,即使您有一个节点,因为这允许集群在将来进行缩放以提高性能。

在主题创建之后,您不能更改分区的数量,因为这会对分区目标产生影响。

在您的示例中,如果集群中有3个节点,我将从每个节点3个节点开始,最多为9个节点--请自己测试。

每个分区有一个1名消费者的限制,这就是你看到的行为。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68286935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档