我正在与一个Kafka消费者组合作,需要在一个组中有超过50个消费者。据我所知,这受到Kafka分区数量的限制。当在Kafka消费者组中使用超过50个消费者时,如何处理消息排序?是否可以进行任何最佳实践或特定配置更改,以确保以正确的顺序处理消息?我可以通过处理新的本地队列和一致性散列算法来实现,但我不想从头开始创建它。我的另一个解决方案是编写路由器并创建子主题,但我认为这不是一个好主意!
0kjbasz61#
Kafka只提供了分区内的排序,仅此而已。排序只是通过偏移量进行的,在这种情况下,不清楚你所说的“正确”是什么意思。如果您想要任何更强的保证,您需要将您的消费者“扇入”到一个源,例如数据库表,或者如您所说的内存(优先级)队列,并按必要的属性进行排序。Kafka消费者可以扩展的最佳方式是所有分区都被认为是平等的。如果你真的需要在主题或分区之间创建一个“任务序列”,你可能需要研究异步消息传递模式,如分布式Sagas。如果您需要在分区之间调度消息,您将需要使用consumer.assign函数来管理特定分区,以及自己管理偏移量,因为这将不再使用消费者组。
consumer.assign
1条答案
按热度按时间0kjbasz61#
Kafka只提供了分区内的排序,仅此而已。排序只是通过偏移量进行的,在这种情况下,不清楚你所说的“正确”是什么意思。
如果您想要任何更强的保证,您需要将您的消费者“扇入”到一个源,例如数据库表,或者如您所说的内存(优先级)队列,并按必要的属性进行排序。
Kafka消费者可以扩展的最佳方式是所有分区都被认为是平等的。如果你真的需要在主题或分区之间创建一个“任务序列”,你可能需要研究异步消息传递模式,如分布式Sagas。
如果您需要在分区之间调度消息,您将需要使用
consumer.assign
函数来管理特定分区,以及自己管理偏移量,因为这将不再使用消费者组。