微服务数据管理(译):应用发布事件模式

场景

已经应用了Saga模式,为了可靠性,每当服务状态改变时,服务必须以原子性方式发布事件。使用一个跨数据库和消息代理的分布式事务是不切实可行的。

问题

每当状态改变的时候,如何可靠地/原子地发布事件?

约束条件

2PC不是一个选项。

解决方案

应用将事件插入到某个EVENTS表中作为本地事务的一部分。某个独立的进程拉取EVENTS表并且将事件发布到消息代理中。

影响

该模式有如下的优点:

高级别的领域事件

无2PC

该模式有如下的弊端:

需要改变应用,可能会导致容易发生错误

很难避免重复发布

很难按顺序发布事件

仅仅对SQL和某些NoSQL数据库有效

文章来源:Pattern: Application publishes events

你可能感兴趣的:(微服务数据管理(译):应用发布事件模式)