华为gaussdb 100推出时支持三种架构,分别为单机架构、HA架构和分布式架构,分别对应于Oracle的单实例、主备架构(PRIMARY+逻辑STANDBY)和SHARDING(12C)三种(类似Oracle RAC的版本后续会发布)。在进一步了解高斯DB 100的三种架构之前,我们先来了解下华为Gaussdb 100中的软件组件(大部分组件在Gaussdb 200中也存在,并且是通用的)(以下内容来自于华为Gausdb 100 产品文档1.0.1-02,由于华为高斯100产品目前仍在快速发展中,因此新版本可能会与我介绍的内容有所不同)。
ETCD:ETCD是华为集群服务中的一个子服务,了解K8S的人都会对ETCD十分熟悉,这是一个分布式高可用的KV数据库,在K8S中作为服务发现存储库来使用。在gaussdb的集群中,华为用etcd来存储集群的元数据和实时状态数据。在集群中,ETCD部署3~7个,华为官方文档推荐部署奇数个,和偶数个节点相比,容错能力相同,却可以少一个节点。角色分leader和follower。ETCD leader和ETCD follower间工作原理如下:ETCD leader同时向所有ETCD follower同步数据。 写入数据到ETCD leader时,会根据raft一致性协议,与ETCD follower达成大多数一致后才能写入成功。当ETCD 没有leader时,所有ETCD follower会自发启动抢主流程,重新选举出新的ETCD leader。CM:CM是华为的集群管理模块(Cluster Manager),由CM守护进程、CM Agent和CM Server组成。
CM Agent:负责监控所在主机上CN、主备DN的运行状态并将状态上报给CM Server。同时负责执行CM Server下发的仲裁指令。GaussDB 100集群的每台主机上均有CM Agent进程。
daemon :看护CM Agent的定时任务。负责在CM Agent意外停止的情况下将CM Agent重启。
CM Server:根据CM Agent上报的实例状态判定当前是否需要修复,并下发指令给CM Agent执行。
DN:数据节点(Data Node),高斯数据库存储数据的组件,对于单机版来说,DN就是数据库本身。DN负责存储数据,执行数据查询并向CN返回查询结果。在架构上,高斯100的SHARDING和Oracle 12C的Shard ing是不同的。
CN:协同调度节点(Coordinator Node)。负责接收来自应用的访问请求,并向客户端返回执行结果;负责分解任务,并调度任务分片在各DN上并行执行。在高斯数据库的集群中,CN有多个且CN的角色是平等的(执行DML语句时连接到任何一个CN都可以得到一致的结果)。只需要在CN和应用程序之间增加一个负载均衡器,使得CN对应用是透明的。CN故障时,由负载均衡自动路由连接到另外一个CN。当前分布式事务框架下无法避免CN之间的互连,多个CN协同工作时会产生大量的集群协同开销,因此不建议无限制扩大CN集群数量,建议CN配置数目<10个。GTS:全局时钟服务器(Global Time Server)。用于强一致场景下,为各个节点提供逻辑时钟。这个服务在Oracle 12c中同样也存在,其用途都是相同的。全局时钟服务器(GTS)通过提供全局逻辑时钟,实现sharding间数据的强一致性读;集群中GTS节点可设置多个备节点,主备节点间的时钟通过配置NTP服务保障时间的递增属性。时间服务器的优点有:无状态、批量处理、无锁化、无瓶颈点。GTS针对每个请求获取本地时间,多并发之间没有互斥锁或内核互斥锁,但取时间需要经过内核态调用。
OM:运维管理模块(Operation Manager)。提供集群日常运维、配置管理的管理接口、工具。华为提供了一个类似于srvctl/crsctl的管理工具,gs_om。使用gs_om -t status可以查看集群的状态,是不是和Oracle有点类似。
STORAGE:存储介质。服务器持久化存储介质。
了解了上面的一些软件组件概念后,我们就可以来看华为高斯数据库的三种架构了。
单机架构:
单机架构的软件结构如下图:
单机架构十分简单,部署时可以部署DM,也可以不部署DM,直接部署DN。因此ETCD,CM,DM都不是必须的。单机架构采用单线程多进程结构。
应用端通过TCP/IP连接到会话线程上,会话线程负责SQL的解析和执行工作,最终将结果返回客户端。应用程序连接gaussdb 100单机版的结构如下图:
主备HA架构:
主备架构是通过Gaussdb 100的物理复制技术来实现的,十分类似于ORACLE的逻辑STANDBY。Gaussdb 100支持一主多备的方式,备库可读,可以实现读写分离。主库与备库之间可以通过cm实现自动切换。
GaussDB 100支持逻辑复制功能,实现了GaussDB 100和其他异构数据库之间进行数据同步,可将特定数据库对象(通常是数据表)的变化同步到目标数据库,还可帮助用户将若干个GaussDB 100数据库实例中的数据汇总到一个GaussDB 100实例中进行数据分析。除此之外,还能帮助用户实现不中断式的业务在线升级、监控并展示关键表的数据变化、将备份数据公开给完全不同的用户权限组。
分布式架构
gaussdb 100的分布式架构是和Oracle 12c Shard ing类似的(功能类似,技术实现差异较大),主要是为了提高并发OLTP的性能,而不是OLAP(OLAP由gaussdb 200实现)。
和前两种架构不同的是,这个结构中多了CN,应用首先连接到CN上,由CN完成SQL执行的调度工作,多个CN是功能相同的。
为了确保某个DN故障失效,在对高可用有要求的环境中,需要对每个DN都创建主备服务。
标签:gaussdb