与我一起学习微服务架构设计模式4—使用Saga管理事务

微服务下的事务管理微服务架构下的事务往往需要横跨多个服务,每个服务都有属于自己的私有数据库。传统的分布式事务管理并不是合适选择,需要使用saga机制。微服务架构对分布式事务的需求每个服务都有自己的私有数据库,需要一种机制来保障多数据库环境下的数据一致性。分布式事务的挑战分布式事务管理的事实标准是xa,它采用两阶段提交保证事务中所有参与方同时完成提交,或失败时同时回滚。应用程序的整个技术栈需要满足xa标准。问题:许多新技术,如nosql数据库,kafka等消息代理不支持xa标准。其本质上都是同步进程间通信,这会降低分布式系统的可用性。使用sage模式维护数据一致性saga由一连串的本地事务组成,每一个本地事务负责更新它所在服务的私有库,使用异步消息来协调一系列本地事务。启动saga时,协调逻辑必须选择并通知第一个saga参与方执行本地事务,一旦事务完成,saga协调选择并调用下一个saga参与方。直到执行完所有步骤。挑战:缺乏事务的隔离性发生错误时的回滚更改saga使用补偿事务来回滚所做出的改变当saga的步骤因违反业务规则而失败时,saga必须通过执行补偿事务显式撤销先前所做的更新,它按照正常事务的反向顺序来执行补偿事务。saga的协调模式协同式saga把saga的决