分布式高可用
GBase 8c支持分布式全组件级的高可用冗余,就是我们的所有节点都支持高可用部署。
● CN:协调器,采用完全对等的部署方式。对外提供接口,负责进行SQL解析和优化、生成执行计划,并协调数据节点进行数据查询和写入。在功能上CN上只存储系统的全局元数据,并不存储实际的业务数据;在部署上,CN多个节点完全对等的部署方式,每个节点在同一时间对外都提供相同的数据库视图,所以我们的CN节点高可用可以根据实际的业务需求,部署1个或多个都可以,多个CN节点可以部署在同机房、同城、异地都可以。
● DN:数据节点,采用主备的高可用架构,主备之间可以配置同步或异步方式。用于处理存储本节点相关的元数据,每个节点还存储它所在的业务数据的分片。在功能上,DN节点负责完成执行协调器节点分发的执行请求,完成数据存储和本地数据查询和写入;在部署上,DN节点每个高可用组采用主从备份的方式,可以部署单主、一主一从以及一主多从的部署方式均可,主从之间可以配置为同步的备份方式也可以配置为异步的备份方式,也可以在一个高可用组内同时存在同步和异步的节点,一般同机房同城的节点之间采用同步的备份方式,异地的节点之间采用异步的备份方式。
● GTM:全局事务管理器,采用主备的高可用架构,主备之间可以配置同步或异步方式。主要是做分布式事务,负责生成并维护全局时间戳,保证集群数据一致性。在部署上,GTM的与DN节点的部署类似,也是一主多从的备份方式,节点间可以采用同步的备份方式也可以采用异步的备份方式。
● HA Center(这个实际上是ETCD):集群状态管理器,采用Raft的复制协议。存储各个节点的高可用状态,负责在故障情况下判断集群各个节点状态。
● GHA Server(这个实际上是patroni):集群管理器,采用主备的高可用架构,主备之间可以配置同步或异步方式。用以管理整个集群各个节点的高可用状态(主备、死活等)。GHA Server的主备信息与DN类似,也是将leader信息存在HA Center上,谁先写谁就是主,需要周期更新,如果超过TTL没更新就会删掉leader信息,其他节点去写就能写进去就变成leader了。
● GHA Agent 跟着每个CN和DN上都有,作为代理,接收GHA Server的消息并处理。(这个其实在图里都不用体现,部署上也都是跟着CN和DN一起了,对外不体现)
同时,GBase 8c的高可用支持双网卡配置,可以将数据面和控制面分开,以应对在高并发场景下,因数据库业务拥塞导致的高可用功能不可用情况。(网卡方面,一般数据面需要万兆网卡,以应对业务量;控制面千兆或百兆网卡均可)