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

GaussDB(DWS)分布式事务

原创 杨凯同学 2023-10-03
634

分布式事务


技术背景

在分布式share nothing架构下,表的数据分布在不同的节点上。客户端的一条或多条语句可能会同时修改多个节点上的数据,这种情况下,会产生分布式事务。分布式事务需要关注以下几点:

1)在各个节点上事务的原子性,分布式事务在所有节点上要么全部成功要么全部失败;

2)事务的一致性,查询在各个节点上返回一致的数据。当节点出现故障时,是否会返回不一致的数据。

其中,分布式事务的原子性是必须要满足的,分布式事务的一致性根据CAP理论会有不同的标准,常见的是支持强一致2pc、3pc协议等的CP系统,或者支持最终一致性TCC、消息表等的AP系统。

技术原理

DWS支持强一致的分布式事务,在满足CP的基础上最大程度的提供高可用服务。

CSN

图1 CSN的更新以及与XID的映射关系

CSN – Commit Sequence Number,事务提交号

1)CSN是一个单调递增的8字节无符号整数,由GTM维护;

2)事务结束时,从GTM上获取并更新CSN值;

3)采用CSN机制后,查询只需从GTM上获取CSN号即可。

GTM

GTM是GaussDB分布式框架下的一个组件:

1.管理和分配事务号(只增不减)

2.管理和维护CSN号(只增不减)

CN在执行修改操作时会从GTM上获取事务号。

CN在语句开始时会从GTM获取一个CSN用于查询。

CN在事务开始和结束会与GTM通信,注册和销毁事务相关信息。

故障处理

在节点出现故障造成分布式事务残留后,通过gs_clean工具进行自动清理。

gs_clean从各个节点上查询残留的两阶段事务,根据残留的事务号,去其它节点上查看该事务提交还是回滚,并根据最终结果对两阶段残留事务进行清理。

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

评论