例如,我们有带事件源的微服务。为了实现数据一致性,我们使用以下方法:
- 微服务生成事件
- 事件存储在事件存储中
- 事件发布到订阅的微服务
这种方法适用于已经在使用的微服务。但是,如果我需要部署另一个需要将数据与事件存储同步的微服务,该怎么办?显然,这个新的微服务错过了所有发布的事件。
这个新的微服务应该自己从事件存储中提取事件吗?
随着时间的推移,从事件存储中提取所有事件可能会变得成本高昂,因为事件的数量可能会激增。
为了加快新微服务的初始化,您应该不时创建应用程序状态的快照(并将其存储在一些快速访问内存/缓存中(。快照之后存储的所有事件都基于快照中的应用程序状态。
这样,当你部署一个新的微服务时,它将首先加载最新的快照,然后应用该快照之后存储的所有事件,以了解应用程序的最新状态。
您可以调整创建快照的频率,以便需要加载的额外事件数量相对较少。
这是一篇很好的文章,你可以查看更多详细信息。