标签:分布式 错误 因此 事务 缺点 崩溃 png 上下 需求
Application events(系统事件)
服务命令通常需要更新数据库并发送消息/事件。例如,参与saga的服务需要以原子方式更新数据库并发送消息/事件。同样,发布域事件的服务必须以原子方式更新聚合并发布事件。数据库更新和发送消息必须是原子的,以避免数据不一致和错误。但是,使用跨越数据库和消息代理的分布式事务以原子方式更新数据库并发布消息/事件是不可行的。
如何可靠地/原子地更新数据库并发布消息/事件?
使用关系数据库的服务将消息/事件作为本地事务的一部分插入到发件箱表(例如MESSAGE)中。使用NoSQL数据库的服务将消息/事件附加到正在更新的记录(例如文档或项目)的属性。单独的Message Relay进程将插入数据库的事件发布到消息代理。
这种模式具有以下好处:
这种模式有以下缺点:
此模式还存在以下问题:
标签:分布式 错误 因此 事务 缺点 崩溃 png 上下 需求
原文地址:https://www.cnblogs.com/paxlyf/p/11293718.html