ITPub博客

首页 > 数据库 > 国内数据库 > 南大通用GBase 8c数据库-两阶段提交事务状态保持(下)

南大通用GBase 8c数据库-两阶段提交事务状态保持(下)

原创 国内数据库 作者:GBASE南大通用 时间:2026-10-12 14:13:48 0 删除 编辑

南大通用GBase 8c数据库(gbase database)通过两阶段提交(2PC) 事务状态保持机制,在经典两阶段提交协议的基础上增加了一层“保险”——协调器故障时,其他 CN 节点可以自动接管并完成未决事务,既保证了分布式事务的强一致性,又避免了传统 2PC 的阻塞问题。

这一设计体现了分布式数据库的一个核心思路: 与其试图消除故障,不如让系统在故障发生时依然能够自愈。对于金融、政务等对数据一致性和系统可用性都有极高要求的场景来说,这种“鱼与熊掌兼得”的能力,正是 GBase 8c 的价值所在。

三、GBase 8c 的解法:2PC 事务状态保持

南大通用GBase 8c(gbase database)针对协调器故障会导致事务状态无法最终确定的问题,对 2PC 执行流程做了关键优化,设计了 2PC 事务状态保持功能。设计思路是: 让集群中的 CN 节点互为“备份” ,任一 CN 宕机后,其他 CN 可以无缝接管其未完成的 2PC 事务。

具体机制如下:

第一步:故障检测。 当 CN2 节点在发送 Commit 后、尚未收齐所有 Commit OK 时宕机,集群的高可用管控组件会 立即检测到该问题。

第二步:自动选举与接管。 系统自动选出一个健康的 CN 节点(如 CN3),由后者接管故障 CN 上所有未完成的 2PC 事务。

第三步:状态收集与决策。 新的协调器(CN3)收集所有未完成的 2PC 事务,检查每个事务当前所处的阶段,然后独立决定每个事务应该提交还是回滚。

第四步:完成流程。 CN3 向各个 DN 发送相应的指令,完成全部 2PC 流程,确保系统不被阻塞。

关键之处在于: CN3 接管后无需重复已经成功提交的阶段,只需继续完成故障 CN 未完成的状态即可。整个过程对上层业务 完全无感知。

四、为什么能做到无感切换?

这套机制能够实现“无感”,背后有几个设计要点:

1. 事务状态的持久化。 2PC 的各阶段状态(Prepare、Commit 等)均被持久化存储,新协调器可以通过查询系统表或日志来还原事务的当前进度。

2. CN 节点的对等设计。 所有 CN 节点功能对等,任一 CN 都具备协调分布式事务的完整能力,不存在“只有特定节点才能接管”的限制。

3. 高可用管控的快速检测。 可靠的故障检测与选举机制,能够在秒级时间内发现节点故障并触发切换。

最终,这个分布式事务在所有参与者上的状态 一定是相同的:要么全部提交,要么全部回滚。


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69979120/viewspace-3185267/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
GBASE南大通用,致力于成为用户最信赖的数据库产品供应商!

注册时间:2020-07-16

  • 博文量
    1303
  • 访问量
    1275220