如何在新添加的微服务中实现数据一致性?

How to achieve data consistency in a newly added microservice?

例如,我们有带有事件源的微服务。 为了实现数据一致性,我们使用以下方法:

  1. 一个微服务生成一个事件
  2. 事件存储在事件存储中
  3. 事件发布到订阅的微服务

这种方法适用于已经在使用的微服务。 但是如果我需要部署另一个需要与事件存储同步数据的微服务怎么办? 显然,这个新的微服务错过了所有已发布的事件。

这个新的微服务应该自己从事件存储中提取事件吗?

随着时间的推移,从事件存储中提取所有事件的成本会越来越高,因为事件的数量可能会激增。

为了加速新微服务的初始化,您应该不时创建应用程序状态的快照(并将其存储在一些快速访问的内存/缓存中)。快照后存储的所有事件都基于快照中的应用程序状态。

这样,当您部署新的微服务时,它会首先加载最新的快照,然后应用该快照之后存储的所有事件,以与应用程序状态保持同步。

您可以调整制作快照的频率,以便需要加载的额外事件的数量相对较少。

This 是一篇不错的文章,您可以查看更多详细信息。