Goldendb 数据库

一、总览

GoldenDB采用Share-nothing架构,性能可线性扩展。支持灵活的部署模式且支持多种模式混合部署,可以适配不同业务场景。支持基于DBaaS平台的多租户服务,用户可以按需使用数据库资源。支持通用数据库标准协议,完全兼容ANSI SQL92、SQL99、SQL2003等SQL标准,支持JDBC、ODBC、Native C API、OCI等驱动。提供丰富的应用访问接口,如restful API接口、工具命令行接口、文本采集接口以及SQL命令采集接口,实现与多种应用及第三方平台对接。
GoldenDB架构如下所示:

GoldenDB主要由四部分组成:分别为计算节点、数据节点、全局事务节点GTM和管理节点。其中各节点功能如下:
(1)计算节点:提供分布式数据库的SQL解析、SQL路由、SQL优化和SQL执行等功能;
(2)数据节点:提供分布式数据库的数据存储、数据分片、备份恢复和主备同步等功能;
(3)全局事务节点GTM:用于分布式数据库的全局一致性管理;
(4)管理节点:提供运维管理平台、集群状态管理、元数据管理等功能。

二、部署方式

GoldenDB支持同城多中心、异地双中心、两地三中心、三地五中心等多种高可用部署架构。系统组件具备冗余设计能力,无单节点故障问题,当部分节点发生异常情况时,数据库可以自动切换转移故障,保证业务的持续性。金融行业最典型的两地三中心部署方式如下图所示,可以实现同城双活和异地灾备,由一套运维管理平台进行统一管理。计算节点采用无状态设计,在所有机房内均匀部署。其他节点采用一主多备方式部署,生产机房部署主节点及若干备节点,其他机房部署备节点。所有节点均采用集群方式部署,发生故障时可自动切换。同城机房间的节点采用同步复制方式进行数据同步,异地机房间的节点采用异步复制方式进行数据同步,可实现同城机房RPO=0,保障数据不丢失。

GoldenDB在多副本使用场景下,支持主副本的切换优先级顺序,按照本机房副本、同城副本、异地副本的优先级进行选择。具备机房级容灾和城市级容灾能力,保证在机房灾难或者城市灾难的情况下,能够利用多副本数据冗余实现容灾功能,并且不会造成数据丢失,同时,异地机房能够具备灾备演练的能力。

GoldenDB具有高可用能力,包括计算节点高可用、数据节点高可用、全局事务节点高可用和管理节点高可用。
1、计算节点高可用
计算节点通过无状态的部署方式实现高可用,所有的计算节点集群都对外提供服务,当其中一个计算节点出现故障的时候,业务访问会路由到其它正常计算节点,对业务基本无感知。

2、数据节点高可用
数据节点通过一主多备的部署方式实现高可用,主备之间通过快同步复制技术实现数据同步。数据节点之间的主备切换可以通过OMM(Insight管理界面)发起,当数据主节点出现故障时,由CM(ClusterManager)发起故障切换流程。

3、全局事务节点高可用
全局事务节点GTM通过一主多备的部署方式实现高可用,主备之间通过MQ增量实时同步消息的方式同步GTID信息。GTM之间的主备切换可以通过OMM(Insight管理界面)发起,当GTM主节点出现故障时,由MDS(Metadataserver)发起故障切换流程。

4、 管理节点高可用
管理节点通过Zookeeper集群的部署方式实现高可用,需要采用奇数台服务器,防止出现脑裂。管理节点间数据通过DRBD进行数据实时同步。当将数据写入主节点本地文件系统时,数据还将会被发送到网络中备节点上,以相同的形式记录在一个文件系统中。主节点与备节点的数据可以保证实时同步。当主节点系统出现故障时,备节点还会保留有一份相同的数据。Zookeeper软件实时监控主节点的运行状态,当确认主节点系统异常时,切换到备节点。当存在一半以上的管理节点能够正常工作时,整个集群都能正常对外服务。

参考: https://www.modb.pro/db/1792573577526579200

三、实现

3.1 分布式事务的ACID

在分布式系统中,一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务器上,分布式事务需要保证这些小操作要么全部成功,要么全部失败。就是要保证分布式事务的ACID,即原子性、一致性、隔离性和持久性。

事务原子性(A):事务原子性指的是事务中的所有操作,要么全部完成,要么全部失败。在分布式环境下,事务牵扯多个数据节点,对于部分提交成功,部分失败的情况,GoldenDB设计实现了已提交事务回滚功能,来满足此要求。

当出现部分提交成功,部分失败情况时,回滚命令会发送到提交成功的节点,回滚模块根据命令来完成回滚操作。

事务一致性(C):在事务开始之前和事务结束以后,数据库的完整性没有被破坏。写入的数据必须完全符合所有的预设约束、触发器等规则。

事务的隔离性(I):数据库必须保证一个事务在执行中不受其他并发事务影响的能力。即一个事务对其他事务是隔离的,并发执行时各事务间不能互相干扰。单机环境通过设置隔离级别,控制事务之间影响程度。GoldenDB也提供四种读写隔离级别,分别为:非一致性读(UR)、一致性读(CR)、非一致性写(SW)、一致性写(CW)。

事务持久性(D):事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。分布式事务不但需要持久化业务数据,而且需要持久化全局事务状态。数据持久化由数据节点保证,全局事务状态持久化由GTM保证。

3.2 GoldenDB保证一致性(C)

本节将探讨GoldenDB是如何从技术上保证一致性的。

(1)保证事务一致性。

为保证分布式事务一致性,业界主要有两种方案:两阶段提交(2PC)与最终一致性(EC)。两阶段提交存在同步阻塞、一致性读隔离级别下脏读问题;最终一致性方案实现代价高,处理逻辑复杂。

分析业界上述方案的优缺点后,GoldenDB设计出基于全局事务ID(简称GTID)的分布式事务一致性方案。该方案把协调者(Coordinater)和全局事务管理(GTM)两个功能分开。GTM仅管理全局事务状态,由计算节点(DBProxy)充当协调者。GTM支持本地持久化与备机同步,确保全局事务状态信息不丢失。

GTID方案的核心思想,是在全局事务提交过程中,发生部分节点提交失败时,回滚已提交节点数据,而不进行提交失败重试,保证数据最终一致性同时解决同步阻塞问题。

(2)保证数据一致性。

在分布式环境下,数据被打散并存放在多个数据节点上,不但要保证单一数据节点数据一致性,而且要保证所有数据节点数据的一致性。GoldenDB为此设计出集群(Cluster)、分片(Group)、工作组(Team)与高低水位(HLWM)的概念。

在分布式数据库系统中,最大的逻辑单位被称为集群,一个分布式数据库系统可以同时存在多个集群。每个集群由多个分片组成。按照两地三中心部署,每个分片又由最多3个工作组构成。每个工作组由实际的数据节点组成。

分片内使用快同步功能组建主备复制关系,分片内部只允许存在一个主节点。主节点所在工作组被称为本地工作组,负责对外提供服务。其余从节点所在的工作组被称为同城工作组或异地工作组,负责同步主节点数据和主备切换。

主从节点数据同步时,从节点未完成数据同步之前,主节点事务无法完成提交操作,强迫从节点与主节点数据保持一致。但从节点数量越多导致主机事务提交越慢,因此,可以通过高低水位与响应数的设置来进行控制。既能保证从节点数据一致性,又能避免提交过慢的问题。

高低水位分为高水位与低水位两个指标,其功能作用于工作组上。按照本地、同城两个工作组说明,高水位要求两个工作组同时满足数据一致性要求,否则会触发告警。低水位要求两个工作组至少一个满足数据一致性要求,否则整个分片数据只读。

响应数功能作用于工作组内,即使工作组中存在多个数据节点,通过设置响应数,可以控制工作组内满足数据一致性要求的数据节点数量。从而避免由于从节点过多,导致主节点事务提交变慢的问题。

(3)GoldenDB快同步。

MySQL异步复制存在缺陷:在主备切换的时候无法保证备机的数据和主机完全一致。

MySQL在异步复制的基础上提供了一个半同步插件,要求必须收到一个备机的应答响应才让事务在主机上提交,当备机应答超时的情况下,半同步会自动退化成异步模式。该方案在主机本身无故障的情况下,能保证不丢失事务,一旦退化成异步复制就回到上面的问题上去了。

GoldenDB采用了快同步方案:针对半同步进行优化处理,增加了线程池处理逻辑;优化了半同步等待备机响应处理流程和事务提交机制,新增了组管理机制和高低水位阈值机制。

GoldenDB快同步方案,备机超时不会退化为异步,而是通过高低水位设置产生错误码告警。

3.3 GoldenDB保证分区容错性(P)

在分布式环境中,涉及的组件众多,由于环境比单机环境复杂,根据不同组件可分为数据节点、计算节点、GTM节点和管理节点。

数据节点容错性。在分布式环境下,事务执行中发生主节点异常,未提交数据不会被同步到从节点。若出现部分提交,则进行已提交事务回滚。之后进行主从切换,在从节点切换成主节点之前,该分片不提供读写服务,主从切换完成后自动恢复。

计算节点容错性。计算节点本身无状态,发生异常仅导致当前业务失败,并且负载均衡自动屏蔽该节点,保证后续交易发往其他计算节点。对于需要进行已提交事务回滚的事务,计算节点故障无法执行。计算节点部署的监控会重启进程,执行回滚操作。若计算节点重启失败,则根据配置由其他计算节点发起对等回滚操作。

GTM容错性。GTM按照主从部署,通常采用一主多从模式。主机异常时会自动触发主从切换,在从节点切换成主节点之前,不提供申请释放GTID服务,主从切换完成后自动恢复。

管理节点容错性。管理节点分为管理组件与集群元数据两部分,通过部署双机HA软件搭建主从关系,管理组件安装在主从服务器上,集群元数据存储在元数据库中。若主机管理组件发生故障,双机软件会自动切换到从机。若元数据库发生故障,双机软件会自动切换到从机,并完成主备切换操作。

3.4 GoldenDB最大程度保证可用性(A)

在分布式环境下,当服务器、网络出现故障时,为保证一致性,数据库服务会不可用,导致可用性下降。在无法完全保证可用性的情况下,需尽可能缩短系统不可用时间,GoldenDB通过主从切换、HA切换自动恢复系统可用性,通过高低水位设置能最大程度保障系统的可用性。

低于高水位会有告警,低于低水位会触发只读。系统可用性会有一个从正常到异常告警,再到异常不可用的一个衰减过程。如能及时响应告警、处理故障,可以保证较高的系统可用性。

参考文档: https://www.modb.pro/db/25106

posted @ 2025-10-30 10:46  静水深耕,云停风驻  阅读(208)  评论(0)    收藏  举报