我试图理解如何动态地扩展应用程序,它消耗了大量的主题(不幸的是,我不能减少它们的数量-通过设计每个主题都是针对特定类型的数据)。我希望我的应用程序集群共享来自所有200多个主题的负载。e、 g当一个新的应用程序节点添加到集群中时,它应该从旧节点“窃取”一些主题订阅,这样负载就可以再次均匀分布。据我所知,Kafka党派/消费者团体有助于将一个主题并行化,而不是在多个主题之间分担负担。
u4vypkhs1#
您需要确保所有应用程序示例都使用相同的kafka消费者组(通过group.id)。在这种情况下,你实际上有一个均匀分布你想要的。当一个新的应用程序示例被添加时,消费者组将重新平衡并确保负载被分配。另外,当创建一个新的主题/分区时,使用者最多需要“metadata.max.age.ms”(默认值为5分钟)才能开始使用它。确保将“auto.offset.reset”设置为“earliest”以不丢失任何数据。最后,您可能希望使用regex来订阅所有这些主题(如果可能的话)。
u5i3ibmn2#
Kafka主题是一组类似类型的消息,因此您可能有200多种类型的消息被200多种类型的使用者使用(即使一个使用者可以处理多种类型的消息,逻辑上您也有200多种不同的处理方式)。kafka分区是一种并行处理来自一个主题的消息的方法。每个分区将由绑定到主题的使用者组中的一个使用者完全使用,因此,主题的分区总数至少需要与使用者组中的使用者数量相同,才能理解分区功能。所以这里有200多个主题,每个主题有n个分区(其中n个分区大于或等于预期的最大应用程序数),每个应用程序应该使用所有200多个主题。消费者必须给自己贴上消费者组名称的标签,发布到某个主题的每条记录都会传递到每个订阅消费者组中的一个消费者示例。所有消费者都可以使用同一个消费群体。请参阅Kafka文档以获得更好的解释。。。
2条答案
按热度按时间u4vypkhs1#
您需要确保所有应用程序示例都使用相同的kafka消费者组(通过group.id)。在这种情况下,你实际上有一个均匀分布你想要的。当一个新的应用程序示例被添加时,消费者组将重新平衡并确保负载被分配。
另外,当创建一个新的主题/分区时,使用者最多需要“metadata.max.age.ms”(默认值为5分钟)才能开始使用它。确保将“auto.offset.reset”设置为“earliest”以不丢失任何数据。
最后,您可能希望使用regex来订阅所有这些主题(如果可能的话)。
u5i3ibmn2#
Kafka主题是一组类似类型的消息,因此您可能有200多种类型的消息被200多种类型的使用者使用(即使一个使用者可以处理多种类型的消息,逻辑上您也有200多种不同的处理方式)。
kafka分区是一种并行处理来自一个主题的消息的方法。每个分区将由绑定到主题的使用者组中的一个使用者完全使用,因此,主题的分区总数至少需要与使用者组中的使用者数量相同,才能理解分区功能。
所以这里有200多个主题,每个主题有n个分区(其中n个分区大于或等于预期的最大应用程序数),每个应用程序应该使用所有200多个主题。消费者必须给自己贴上消费者组名称的标签,发布到某个主题的每条记录都会传递到每个订阅消费者组中的一个消费者示例。所有消费者都可以使用同一个消费群体。
请参阅Kafka文档以获得更好的解释。。。