前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PostgreSQL Postgres-XL GTM 到底是干什么的

PostgreSQL Postgres-XL GTM 到底是干什么的

作者头像
AustinDatabases
发布2021-09-02 16:30:40
9020
发布2021-09-02 16:30:40
举报
文章被收录于专栏:AustinDatabases
POSTGRES-XL 中的GTM 掌管着整体的集群中的事务,在单机中每个事务通过xmin,xmax在单表实现事务控制的功能转移到了POSTGRES-XL 中的GTM组件中,GTM 收集所有的事务的状态包含运行,COMMITTED, 以及事务的aborted的状态.

GTM 提供分布式数据库中所有事务的GXID,并且这些GXID 是唯一的并且是有序的,在事务的开始和结束这段时间保证来控制所有节点中的tuple的可见性.这个功能称之为global snapshot. 并且保证事务的一致性.

在事务中如果选择了read committed 来作为分布式数据库的isolation的话,则事务中的每一个语句都会需要一个SNAPSHOT, 如果是更高级别的方式则SNAPSHOT 会在事务运行中对其进行变动.

在系统的部署中GTM 往往被认为是一个性能瓶颈,而瓶颈的来源于网络的开销, DN, CN 频繁的与GTM进行交互, 所以这三者建议部署在一个网段中,而不是将其分割在不同网段以及不同的交换设备中.

Coordinator 节点在接受到应用端对数据库的访问,在coordinator中会使用GTM client library 来与GTM 沟通获得事务的GXID和事务的SNAPSHOT, 并报告事务运行的状态.

而GTM 则通过自身提供的端口来接受连接,每一个coordinator 和 datanode 的通讯,当接受一个连接,产生一个GTM THREAD 线程去handle GTM于 datanode 和 coordinator之间的通讯. 在通讯的过程中线程始终在CN 和 DN 之间建立事务snapshot,以及发送事务GXID,只有事务完成后,这个线程才退出服务.

实际上GTM 并不直接与coordinator通用,而是通过GTM proxy来进行更有效的通讯.一般来说一个GTM proxy 可以负责上百个 coordinator 的请求.

GTM proxy 通过对coordinator所有的请求扫描的方式,将多个请求进行分组发送给GTM,减少coordinator 与GTM 之间的交互频率.

分布式事务在POSTGRES-XL 通过2PC的来实现, 对于每一个分布式事务本身是强一致的,对于自己的的事务的一致性是完成了,但是对于其他事务对于自己的事务的可见性来看,则无法保证,GTM 就是为了完成这个任务而存在的.

GTM 的配置上比较简单,处于GTM 对于整体POSTGRES-XL架构的重要性,GTM 一定要有一个STANDBY 的节点,本身GTM 的配置文件并不复杂, 大部分的配置项都是与STANDBY有关的配置,而POSTGRES-XL 的GTM 的standby节点一定是要和GTM 节点是要同步的,而不是异步的数据复制. 同时对于PG 的control 文件是要定期进行备份的,这也是对GTM重要性的一种保护. 其中最重要的配置项就是startup 如果选择项是ACT 则说明这个节点是主节点对外提供服务的节点,如果是STANDBY 则这个GTM节点是备用节点.

下面我们从几个图来窥探一下coordinator , GTM 之间以及GTM 本身的工作的基本情况.

1 在coordinator获得应用的请求后,通过本身的事务生成器 去请求本身的gtm.client 去产生请求包,其中包含相关的请求的事务信号类型,以及事务所需的隔离级别.

2 这些信息通过gtm_proxy 将信息汇总后,发往GTM (需要看隔离级别,不同的隔离级别对产生的gtm_proxy包的封包类型不同)

3 GTM 接受到命令后通过下图方块中的逻辑来对不断的请求进行处理

4 每个请求都需要获取到全局锁, 通过全局锁来将操作原子性,将获得的信息来进行排序,并进行处理保证处理信息的有序性.

5 将产生的xid 信息发送回gtm_proxy, 最终coordinator 将信息获得返回给申请的GXID的事务.

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-08-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AustinDatabases 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
TDSQL MySQL 版
TDSQL MySQL 版(TDSQL for MySQL)是腾讯打造的一款分布式数据库产品,具备强一致高可用、全球部署架构、分布式水平扩展、高性能、企业级安全等特性,同时提供智能 DBA、自动化运营、监控告警等配套设施,为客户提供完整的分布式数据库解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档