华为gaussdb 100推出时支持三种架构,分别为单机架构、HA架构和分布式架构,分别对应于Oracle的单实例、主备架构(PRIMARY+逻辑STANDBY)和SHARDING(12C)三种(类似Oracle RAC的版本后续会发布)。在进一步了解高斯DB 100的三种架构之前,我们先来了解下华为Gaussdb 100中的软件组件(大部分组件在Gaussdb 200中也存在,并且是通用的)(以下内容来自于华为Gausdb 100 产品文档1.0.1-02,由于华为高斯100产品目前仍在快速发展中,因此新版本可能会与我介绍的内容有所不同)。
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执行。
OM:运维管理模块(Operation Manager)。提供集群日常运维、配置管理的管理接口、工具。华为提供了一个类似于srvctl/crsctl的管理工具,gs_om。使用gs_om -t status可以查看集群的状态,是不是和Oracle有点类似。
STORAGE:存储介质。服务器持久化存储介质。
了解了上面的一些软件组件概念后,我们就可以来看华为高斯数据库的三种架构了。
单机架构:
单机架构的软件结构如下图:

单机架构十分简单,部署时可以部署DM,也可以不部署DM,直接部署DN。因此ETCD,CM,DM都不是必须的。单机架构采用单线程多进程结构。

应用端通过TCP/IP连接到会话线程上,会话线程负责SQL的解析和执行工作,最终将结果返回客户端。应用程序连接gaussdb 100单机版的结构如下图:


主备架构是通过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都创建主备服务。




