分布式事务方案构想
2019-08-08 18:09:26 0 举报
登录查看完整内容
分布式事务方案构想
作者其他创作
大纲/内容
备注:在整个分部式事务中,有可能在事务提交环节出现异常(如某个数据库实然宕机),该方案无法自动处理此类异常,但是,此类异常会在系统中留下痕迹(即txId缓存未被清除),此时可人工介入处理,或对重要场景使用TCC方案,
结束
回滚事务,更新缓存:success=false
否
success=truecommit=1all mark = 1
启动事务监听
是
否执行下一个操作
缓存待提交的数据,后续可针对实现补偿式提交或回滚
若success=true则执行业务操作,否则回滚事务并终止整个业务流程
是否超时
提交事务count-1
count=0
回滚事务count-1
生成一个全局唯一的事务ID,并存入Redis中,事务ID须在整个分布式事务中流转
生成事务ID
是否执行成功
加入事务:即在txId缓存中加入当前操作的执行标记,mark=0,当该操作执行完成后置为1,当多操作异步执行时,依此判断是否执行完成,若每个操作都是同步的,则该步骤无实际意义
可选
每个操作成功执行以后都会产生一个事务监听,当监听到commit=1时表示业务操作全部成功执行,此时开始提交事务,直到count=0表示事务全部提交成功,此时移除共享事务锁,整个分布式事务结束
是否最后一个操作
更新缓存:success=false
判定txId缓存(同步锁)
开始
清除缓存
success=false
更新缓存:count+1mark=1
success=true
更新缓存:commit=1
检查txId缓存
0 条评论
回复 删除
下一页