onlyliuxin / coding2017

218 stars 643 forks source link

大家说说工作中遇到的分布式事务解决方案 #466

Open StefanieLi opened 7 years ago

liubin-vip commented 7 years ago

分布式事物主要为了尽量满足CAP,但是CAP不可能同时满足的,一般需要牺牲强一致性来换取系统的高可用性,系统往往只需要保证“最终一致性”,只要这个最终时间是在用户可以接受的范围内即可。 所以核心是为了解决一致性的问题: 我现在的工作单位是用ActiveMQ来实现最终一致性的,其工作过程可分为三个阶段:第一阶段发送Prepared消息时,会拿到消息的地址,第二阶段执行本地事物,第三阶段通过第一阶段拿到的地址去访问消息,并修改状态。同时需要用到实务的地方都有详细日志记录的,一旦系统内部引发生异常,后台会有定时任务扫描和分析此类日志,检查出异常的情况,然后通过程序来补偿并邮件通知相关人员来“手工”保证事务的一致性。