kafka 消费者组在分布式情况下消费者分配问题

场景是使用kafka来收集前端请求数据,后端启动golang写的消费者来消费数据并计算。

目前发现单台消费者占用CPU过高,想部署多台。但是多台机器会导致启动多个消费者加入了同一个消费者组。

那么kafka有没有内部机制来平衡多个机器加入同一个消费者组的消息分配呢?

就是说,要保证两台机器启动起来的消费者均衡,而不是第一台加入消费者组的消费者太多。

阅读 4.2k
2 个回答

每个分区只能被同一个消费组里面的一个消费者实例占用,所以你可以增加分区,然后用一致性hash的方式保证每个分区中的消息数量均衡

  1. 可以增加partition, 比如32个partition, 将消息按照一定逻辑 pub 到不同的partition 里面
  2. 启动多个消费者,使用相同的消费组。 程序将自动分配 parititon 进行消费
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题