首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kafka实现消息过滤的最佳方式

Kafka实现消息过滤的最佳方式
EN

Stack Overflow用户
提问于 2020-04-22 03:31:11
回答 2查看 133关注 0票数 0

想知道下面这种情况的最好方法。

在微服务项目中:一个应用程序(生产者)发布消息,这些消息被许多其他下游应用程序使用。有些消息是给第一次申请的,有些是给第二次申请的,有些是给第三次申请的,以此类推。什么是最好的方式,让消费者只消费那些为他们准备的消息。

我应该有1个主题和分区数等于no吗?并在发布消息时使用key,因此每个分区将由一个特定的消费者使用。

或者每个消费者一个主题,每个主题中有一个分区或多个分区?

我们还应该考虑到,如果消费者数量在未来增加,那么我们的解决方案应该能够轻松应对。

EN

回答 2

Stack Overflow用户

发布于 2020-04-22 04:41:31

您不应该尝试使用分区来路由到消费者,因为分区是为了可伸缩性,虽然您可以确保相同的键将转到相同的分区,但您无法知道哪个消费者将在任何时候从该分区消费。

因此,每个主题的分区数量与您的问题无关,应该进行设置以满足未来的扩展需求。

您的选择是使用单个主题、每个消费者应用程序的主题还是介于两者之间的某个主题。

只要每个应用程序中的使用者与其他应用程序中的使用者处于不同的组中,以便每个应用程序都能获得所有消息,单个主题就可以。缺点是,每个人都必须过滤掉他们不感兴趣的消息。

每个应用程序的主题也可能很好,尽管它为您提供了生产者必须知道将消息路由到何处的开销,这可能会导致复杂的配置。

另一种方法是基于消息类型的逻辑拆分的主题,其中几个应用程序可能订阅一个主题,一些应用程序可能订阅几个主题,它们可能对所有消息都不感兴趣,但生产者不需要知道谁在消费,只需要知道消息涉及的逻辑区域(您可以决定如何划分主题和消息类型)

票数 0
EN

Stack Overflow用户

发布于 2020-04-22 14:22:16

在我看来,这听起来是使用Kafka的一个很好的用例。

我建议不要复制数据,并将所有消息处理到具有多个分区的一个主题中。从Kafka中处理数据会随着分区数量的增加而扩展,因此我会根据您的预期数据量和所需的吞吐量来设置数量。如果您对已分区主题中的消息顺序有要求,则可以在生产者中使用自定义分区程序来控制数据在该主题中的分布。请注意,Kafka中的消息排序仅在分区内得到保证。

订阅这个Kafka主题的消费者应该尽可能独立于生产者。因此,我不会试图让生产者为消费者“做点什么”。理想情况下,生产者不需要了解消费者的任何信息,特别是如果您计划在将来添加更多消费者。

消费者也应该彼此独立,都使用不同的消费者群体。这样,每个使用者都可以控制独立地从主题中读取数据。此外,在失败的情况下,消费者可以独立地从头重新读取Kafka主题的数据,而不会影响任何其他消费者。

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

https://stackoverflow.com/questions/61351682

复制
相关文章

相似问题

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