目前我只有一个主题分区,只有一个消费者。 但我的消费者运行缓慢,所以我想在同一主题上添加新的消费者。
但与此同时,我也希望所有消费者都能处理独家消息。
我无法确定应创建多少个分区,这样每当我想增加吞吐量和处理独占消息时,我就可以添加消费者。
答案 0 :(得分:1)
如果您有一个主题的N个分区,您可以启动一个包含N个消费者的消费者群组,他们将分别在其中一个分区上工作。
每个消费者都会获得一组完全不同的消息(除非涉及故障转移,然后一些消息可能会多次传递),如果工作负载均匀分布在所有分区中,这将导致负载平衡正常。
如果您的消费者少于N个,其中一些将获得多个分区,但它们仍然不会共享分区,并且每个分区将获得大致相同数量的分区。
如果您有超过N个消费者,有些人将保持闲置状态(但如果其中一个消费者退出,可以作为热备用品)。
所有这一切的关键在于您将这些消费者放入同一个消费者群体中。这是向Kafka表明他们应该在它们之间划分分区的方法。如果您启动了N个使用者组,则每个组将并行获取所有消息(每个消息将被处理N次)。
分区的主要缺点是丢失了邮件的总排序。仅针对同一分区中的其他消息按顺序传递消息。这可能是您的应用程序的问题,也可能不是(如果是,您可以通过查看时间戳重新安排应用程序中的内容)。