使用事件来源进行分布式交易是个好主意吗?

时间:2019-01-16 18:16:29

标签: database architecture event-sourcing

我有2个状态服务集群:mongo和elasticsearch集群。我想使两个群集的文档保持同步。

在我看来,这似乎是一个分布式事务问题,因此我决定尝试事件采购,因为它不仅可以解决此问题,而且自然适合我的应用程序。

我决定使用https://eventstore.org存储事件,并从后端订阅更改,然后更新我的有状态集群。

我的后端是无状态的,最终它将被扩展到多个实例,并且我担心每个后端实例都会从事件存储中获取更新并更新状态集群,因为更新可能是幂等的,所以我会每次写入时都会得到N个相似的文档。通常如何解决此问题?

我真的不想为每个集群创建一个单例订户,以监听更新,这使该单例成为单点故障...

1 个答案:

答案 0 :(得分:1)

  

通常如何解决此问题?

使用单例作家是一个很好的解决方案。通过这种方式,您可以确保不重复工作,并按照事件被写入事件存储的顺序使用事件来更新有状态集群。

  

我真的不想为每个集群创建一个单例订户,以监听更新,这使该单例成为单点故障...

这可以很容易地缓解,因为此单例服务是无状态的,因此当此服务失败时,可以很容易地重新启动它,甚至可以将其移动到另一台主机上。如果您使用容器协调器(例如Docker Swarm或Kubernetes),则非常简单。