我应该如何从另一个服务加载历史事件



我有一个用户微服务,它在创建、修改或删除用户时发布事件。此外,我有一个日历微服务,它需要用户数据。日历服务订阅用户事件,并保留所需数据的只读副本。

我刚刚添加了一个帐户微服务,它需要现有用户数据,并且我使用了与上述相同的模型。将现有用户数据导入Account Microservice的最佳方式是什么?

当我做第一个微服务时,我为每个用户重新发布了用户修改的事件。这很简单,因为没有其他人在使用此事件。如果我现在重新发布,对于新的帐户微服务,现有的日历微服务也将获得事件。我的逻辑是幂等的,但这是大量浪费的工作,而且随着服务的增加,情况只会变得更糟。

我过去加载过很多数据。我知道如何让它发挥作用,但我正在寻找一种最佳实践,以及一种与其他服务的协调和依赖性最小的方法。

当我执行第一个微服务时,我为每个用户重新发布了用户修改的事件。这很简单,因为没有其他人在使用此事件。如果我现在重新发布,对于新的帐户微服务,现有的日历微服务也将获得事件。我的逻辑是幂等的,但这是大量浪费的工作,而且随着服务的增加,情况只会变得更糟。

您可能想要的是一种设计,在这种设计中,您将事件的副本拉到新系统,而不是推送到新系统:请参阅Greg Young,Polyglot Data。

大致来说,订阅者会跟踪高水位线,并在某个标记之后要求更多的事件,然后事件存储按顺序用零个或多个新事件来回答该查询。twitter时间轴api可以让你了解这可能是如何工作的——遗憾的是,解释这些想法的图像似乎已经从文档中删除,但其中一些图像是在堆栈溢出时捕获的,并且是由返回机器捕获的

相关内容

  • 没有找到相关文章

最新更新