[英]One kafka consumer for multiple topics vs one consumer for each topic/partition
[英]Desigining Kafka Topics - Many Topics vs One Big Topic
考虑到一系列不同的事件,推荐的方法是
哪个选项会更好?
我知道消息不在主题的同一分区中,这意味着没有顺序保证,但在做出此决定时是否还有其他因素需要考虑?
主题是逻辑抽象,应包含相同类型的消息。 假设您监控网站并捕获点击流事件,另一方面,您有一个数据库将其更改填充到更改日志主题中。 您应该有两个不同的主题,因为点击流事件与您的数据库更改日志无关。
这有多个优点:
正如@Matthias J. Sax 之前所说,这里没有金子弹。 但我们必须考虑不同的主题。
空调:订购交货
如果您的应用程序需要保证订单交付,您只需要处理一个主题,以及需要保证它的那些消息的相同密钥。
如果订购不是强制性的,游戏开始......
所有消息的模式是否相同?
消费者是否会对相同类型的不同事件感兴趣?
消费者方面会发生什么?,我们是在减少还是增加在实现、可维护性、错误处理方面的复杂性……?
水平可扩展性对我们重要吗? 更多的主题通常意味着更多的可用分区,这意味着更多的水平扩展能力。 它还允许在代理端进行更准确的可扩展性配置,因为我们可以选择每种事件类型增加的分区数量。 或者在消费者方面,每个事件类型有多少消费者站起来。
对每种消息类型并行消费有意义吗? ...
从技术上讲,如果我们允许消费者微调要消费的那些类型的事件,我们就有可能减少从代理向消费者发送不需要的消息所需的网络带宽,以及所有这些事件的反序列化数量(使用的 CPU,随着时间的推移,更多的免费资源,能源成本降低......)。
同样值得记住的是,在不同的主题中拆分不同类型的消息并不意味着必须使用不同的 Kafka 消费者来消费它们,因为它们允许同时从不同的主题消费。
好吧,这个问题没有明确的答案,但我有一种感觉,对于 Kafka,因为具有多种功能,如果不需要有序交付,我们应该将每种类型的消息拆分为不同的主题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.