首先搞清楚是强一致还是弱一致,还是最终一致都是不同的
强一致可以用二段提交做,通过XA协议(协议就是一种数据格式 比如http 有请求头,请求体),就是需要一个 协调者来协调,分为两步来执行, 协 调者发起准备,双方都准备好了再发 起提交,两边都提交好了就完了, 如 果有不 成功的则协调者回调双方 进行回滚
协调器可以自己用代码写,但是这样又会有单点风险,万一挂了怎么办
最终一致可以用saga模式来做,通过消息队列,像鹰眼创建一个唯一id往下 一个一个服务的传递,如果中间有错误往回调用回滚。
也可以通过消息队列用本地事务 把本地操作和发送消息写一起成为一个事 务来实现最终一致
分布式事务用阿里的gts框架
GTS包括客户端(GTS Client)、资源管理器(GTS RM)和事务协调器(GTS Server)
@TxcTransaction