【问题标题】:How to achieve data consistency in a newly added microservice?如何在新增的微服务中实现数据一致性?
【发布时间】:2021-01-06 13:38:15
【问题描述】:
例如,我们有带有事件溯源的微服务。
为了实现数据一致性,我们使用以下方法:
- 微服务生成事件
- 事件存储在事件存储中
- 事件发布到订阅的微服务
这种方法适用于已经在使用的微服务。
但是如果我需要部署另一个需要与事件存储同步数据的微服务呢?
显然,这个新的微服务错过了所有已发布的事件。
这个新的微服务是否应该自己从事件存储中提取事件?
【问题讨论】:
标签:
architecture
microservices
event-sourcing
data-consistency
【解决方案1】:
随着时间的推移,从事件存储中提取所有事件可能会变得很昂贵,因为事件的数量可能会激增。
为了加快新微服务的初始化,您应该不时创建应用程序状态的快照(并将其存储在一些快速访问的内存/缓存中)。快照后存储的所有事件均基于快照中的应用程序状态。
这样,当您部署新的微服务时,它将首先加载最新的快照,然后应用在该快照之后存储的所有事件,以获取最新的应用状态。
您可以调整创建快照的频率,以便需要加载的额外事件的数量相对较少。
This 是一篇不错的文章,您可以查看更多详细信息。