【问题标题】:Using kafka state store change log topic to share state使用 kafka 状态存储更改日志主题共享状态
【发布时间】:2018-04-08 01:38:21
【问题描述】:

我正在尝试对电子商务领域的事件溯源做一个小型 POC。所以我有订单服务、客户联系服务和送货服务。现在出于后勤原因,一些客户联系信息应该提供给送货人员,以便他们可以在他们不在家的情况下给客户打电话等。显然,客户可以更新他们的联系信息,理想情况下,送货应该显示最新的联系信息.我使用 kafka 作为消息传递框架和状态存储。 当我通过读取与聚合的状态更改(例如客户联系信息更改)相关的事件来创建状态存储并将它们应用于聚合时,状态存储以更改日志主题(例如contact-service-customer-contact-变更日志)。现在,如果我在另一个服务(例如交付服务)中需要一些这些数据,我可以使用相同的更改日志主题来创建该服务本地的另一个状态存储吗?在可用的文献中,这种类型的主题被称为“内部”,因此似乎我们不应该将这个主题用于除了为原始服务的实例重新构建状态存储之外的任何事情。所以我们应该将状态存储的更新重新发布到一个新主题,以便其他服务加入这些数据?还是有另一种方法来解决这个用例?

【问题讨论】:

    标签: apache-kafka apache-kafka-streams event-sourcing


    【解决方案1】:

    之所以称为内部主题,是因为它由 Kafka Streams 库管理。这意味着主题名称可能会更改,因此可能无法保存以使用该主题。不过,没有什么能阻止您使用该主题。

    为了不搞乱状态,你不应该到这个话题。从中读取,是“概念上的保存”。

    很难给出建议,您应该自己决定是阅读主题还是手动创建主题并再次写入相同的数据。

    【讨论】:

    • 感谢您澄清@Matthias J. Sax。我不确定应用程序名称更改或状态存储名称更改(构成更改日志主题名称的元素)是否会非常频繁地发生,另一方面,发布重复数据的网络和计算开销似乎考虑到企业中有数百个这样的聚合体,这太高了。我现在将继续重新使用更改日志主题,看看它随着时间的推移如何发挥作用。再次感谢。
    猜你喜欢
    • 2021-01-28
    • 2018-05-01
    • 1970-01-01
    • 2019-07-08
    • 1970-01-01
    • 2021-10-11
    • 1970-01-01
    • 1970-01-01
    • 2021-10-16
    相关资源
    最近更新 更多