暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

AntDB全局事务管理节点

803

全局事务管理节点(Global Transaction Management,GTM)是 AntDB 的核心组件。

GTM 是为保持数据库的全局一致性而存在的。有些 PG 分布式数据库如Postgres-XL 实现全局一致性的方法是集群中每个节点的每个事务使用的事务号和快照都来自 GTM,只要让 GTM 提供全局唯一的事务 ID(即 GXID)和全局快照,整个集群就能保持一致的可见性,从而保持数据库的一致性。但是为了保证提供的事务号全局唯一,GTM 必须要以类似“串行”的方式处理事务号和快照的请求,这可能会使 GTM 成为数据库集群的性能瓶颈。

AntDB 设计了可以让 Coordinator 和 Datanode 从本地就可以获取全局快照的算法,从而避免为了获取快照而向 GTM 进行请求的操作,这样极大地减少了 GTM 的压力。

AntDB 的 GTM 虽然不需要向其他节点提供全局快照,但是仍需要向它们提供 GXID。

GTM 与其他节点之间申请、分发活动事务号的流程如下:
(1)集群节点启动时,Coordinator 和 Datanode 的 SnapRcv 进程会和 GTM的 SnapSender 进程进行连接。

(2)某个节点的 backend 进程需要申请事务号的时候,通过 SnapRcv 进程向 GTM 的 SnapSender 进程发送申请事务号请求。

(3)GTM 的 SnapSender 进程收到申请事务号请求后生成一个 GXID,然后把这个 GXID 返回给申请事务号的 SnapRcv 进程,并把该 GXID 加入待分发事务号列表中。

(4)当 GTM 的待分发事务号列表不为空时,GTM 的 SnapSender 会逐个取出次列表中的事务号,分发给集群中所有节点的 SnapRcv 进程。

(5)节点的 SnapRcv 进程收到 SnapSender 分发下来的事务号后,存储在本地活跃事务列表中。
GTM 与其他节点之间申请、分发结束事务号的流程与活动事务号的申请和分发流程,类似:节点的 backend 进程通过 SnapRcv 进程向 GTM 的SnapSender 进程请求事物号,SnapSender 进程回复结束事务号成功后,向所有节点的 SnapRcv 进程分发结束事务号,各节点收到结束事务号后把此事务号从本地活跃事务号列表中剔除。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论