我是如何基于二阶段递交及悲观锁实现分布式事务的( 二 )
5. 协调者发送事务递交命令至事务主记录所在表1的RaftLeader,在表1RaftGroup持久化事务主记录状态后通知协调者立即向业务服务返回事务是否成功递交;
6. 事务主记录所在的RaftLeader向其他参与者的RaftLeader异步通知事务递交。
每个RaftGroup's Leader都有定时器进行事务状态检测:
* 如果检测到挂起的命令是事务主记录,则与协调者通信检测其是否存活;
* 如果检测到挂起的命令非事务主记录,则与事务主记录所在的RaftLeader通信检测事务状态。
二、上锁及冲突检测流程:
简单说明一下每个Raft节点的状态机的处理流程:
1. Apply事务命令的RaftLog时,先检测当前锁列表是否存在冲突,如果没有冲突上锁成功持久化锁信息后返回;如果存在冲突则排入已上锁队列并持久化锁信息,等待上级锁事务递交后再返回;
2. Apply事务递交命令时,从当前锁列表内找到对应的命令,持久化写入命令对应的KV数据至底层的RocksDB内,如果当前锁有等待队列,则依次将队列重新尝试上锁;
推荐阅读
- 小鱼人|如何在新赛季稳定上分?善于抓失误的小鱼人,值得认真练上一波
- 阴阳师|阴阳师SR川猿强度如何 是否值得抽卡 改变斗技环境 大佬的新玩具
- 手机游戏|梦幻西游手游:活力如何换金币 一切都已给出 就看你的选择
- 华佗|三国杀:两位\奶爸\,朱治与华佗比,强度如何呢?
- 亲朋上分|《亲朋上分》266391亲朋下分亲朋上下分永劫无间崔三娘技能介绍 崔三娘如何获得更多技能
- s6|金铲铲之战:S6双城传说如何才能快速上手?基础知识很关键
- |冰雪传奇:平民玩家四转后如何打金
- 穿越火线|CF:传说武器再度上新,那王者、炫金该如何发展?
- 打野|打野已经被削到几乎不能再削了,到底如何平衡打野位置?
- 电子竞技|新华社对话明凯、阿布,探讨电竞选手是如何炼成的?宁王无辜躺枪