OceanBase分布式事务以及两阶段提交实现详细设计

本文档详细介绍了OceanBase中两阶段提交的实现,包括协调者和参与者处理流程,以及未决事务的处理策略。在设计中,通过primary record记录事务状态,以实现无状态协调者和独立恢复的参与者。此外,还讨论了UPS日志的改造目标,以支持长事务和多UPS的快照读写,确保分布式事务的一致性和可靠性。
摘要由CSDN通过智能技术生成

目前OceanBase中还存在updaeserver单点,下一步的开发任务是使得OB支持多点写入,支持多个UPS(及updateserver)。

其中难点是如何设计两阶段提交的失败恢复以及多机的快照读写,和同事讨论后,形成一个可以work的简单设计版本,记录在此。

为分布式事务的两阶段提交细化具体流程,拟采用primary record方式实现失败恢复,即在进入commit阶段之前,先写入primary record 记录当前事务的状态(commit/rollback)。Primary record起到一个全局日志的作用,可供所有参与者读取。需要注意的是,为了保证一致性,读写primary record 都需要加锁,需要使用select update语句。

采用primary record 方式的优势是,协调者在整个事务处理过程中可以是无状态的,不需要记录操作日志,宕机重启后不需要做失败处理;而参与者宕机重启或超时失败后,可以无需与协调者以及其他参与者通信,实现独立恢复,实现简单。其缺点是每次分布式事务中都会记录一次primary record,会增加写入数据量以及事务延迟。

         将两阶段提交的流程分为以下子流程描述:

Ø  协调者处理流程

Ø  参与者处理流程

Ø  未决事务处理流程

         为支持长事务、长事务中长语句以及两阶段提交,文档还简单描述了对UPS日志的修改目标。

         最后,文档简单记录了组内讨论实现多UPS快照读写的一些讨论结果。

1.  两阶段提交详细流程

Ø  协调者处理流程


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值