我有一个情况,我有一个清单正在由多个微服务基于清单类型进行处理。消息类型与所有这些清单类似,在特定于该特定清单的消息中具有可选参数。我希望这些服务发布到同一个主题,以便,我们有一个订户需要收听的主题,并且还隐藏了存在多个微服务处理来自系统其余部分的库存的事实。这就变成了多对多的场景,即我们有多个生产者和多个消费者。
这是一个好的设计吗?这种方法的优点和缺点是什么?
目前,我正在划分为多个主题,并使消费者订阅这些主题中的每一个。
我有一个情况,我有一个清单正在由多个微服务基于清单类型进行处理。消息类型与所有这些清单类似,在特定于该特定清单的消息中具有可选参数。我希望这些服务发布到同一个主题,以便,我们有一个订户需要收听的主题,并且还隐藏了存在多个微服务处理来自系统其余部分的库存的事实。这就变成了多对多的场景,即我们有多个生产者和多个消费者。
这是一个好的设计吗?这种方法的优点和缺点是什么?
目前,我正在划分为多个主题,并使消费者订阅这些主题中的每一个。
1条答案
按热度按时间t3psigkw1#
Kafka自己并不关心消息的格式,您可以在反序列化您需要的内容之前,查看CloudEvents事件格式以创建一个包含类型的“envelope事件”。
一个主题的缺点包括更窄的失败范围(一个主题的失败百分比更高,而不是多个),并且您的消费者代码可能更复杂。使用小分区大小,还可能在处理不太常见的类型时遇到延迟,因为其他事件会使主题饱和。
多个主题的缺点是,除非对使用者订阅的主题名称使用某种一致的正则表达式模式,否则需要使用新的配置重新部署使用者。