DM8分布计算集群基础概念

目录

概述

一、系统架构

(一)DMDPC 架构

1、计划生成节点

2、数据存储节点

3、元数据服务器节点

(二)多副本系统 

1、BP 多副本架构

2、MP 多副本架构

 二、系统原理

(一)DML流程

1、查询

2、插入

3、更新

4、删除

(二)DDL流程

三、系统特性

(一)高可用

(二)高扩展

(三)高性能

(四)高吞吐量

(五)透明性

四、基本概念和技术指标

(一)基本概念

(二)技术指标


概述

本文主要介绍 DM 分布计算集群的系统架构、系统原理、系统特性、基本概念、关键技术指标等。

达梦分布计算集群英文全称 DM Distributed Processing Cluster,简称 DMDPCDMDPC 是基于达梦数据库管理系统研发的一款同时支持在线分析处理和在线事务处理的新型分布式数据库系统。它既具备传统单机数据库的绝大部分功能,又提供了分布式计算集群才拥有的高可用、高扩展、高性能、高吞吐量和对用户透明等高级特性。
DMDPC 关注和解决的是大数据、计算与存储分离、高可用、支持全部的 SQL标准、拥有完整的事务处理能力和集群规模能够动态伸缩的业务场景。

一、系统架构

(一)DMDPC 架构

DMDPC 架构旨在提供具有分布式特性的可扩展、高性能数据库解决方案,以满足具有 高并发、大规模数据存储、业务快速扩张等特征的用户业务对数据库的要求。

一个完整的 DMDPC 架构由计划生成节点 SP、数据存储节点 BP 和元数据服务器节点 MP 三部分组成。SP 对外提供分布式数据库服务,用户可以登录到任意一个 SP 节点,获得 完整的数据库服务;BP 负责存储数据,执行 SP 的调度指令并将执行结果返回给 SP;MP 负责存储元数据并向 SPBP 提供元数据服务。

SP 节点不存储数据,配置成单机即可。MP BP 节点既可以配置成单机,也可以配置 成多副本系统。其中每一个多副本系统中只有一个作为主节点,其余节点均作为备份节点。

下图是一个典型的 DMDPC 架构图。左侧为单机 DMDPC,右侧为配有多副本系统的 DMDPC

1、计划生成节点

计划生成节点,英文全称为 SQL Processor,简称为 SP。
SP 为 DMDPC 集群中对外提供数据库服务的节点,负责接收用户请求并生成计划、划分子计划、按照一定规则计算并行度并调度各个子计划,并最终将执行结果返回给用户。对于一次客户端请求任务来说,客户端连接的 SP 负责生成、划分并调度计划,其它的 SP 和BP 负责执行计划。

SP 的实现是在已有的成熟达梦单机数据库处理框架的基础上新增了分布式计算处理。因此 SP 具备以下特征:

全部的 SQL 标准支持:包括复杂关联查询、存储过程、视图、序列等某些分布式数据库难以支持的特性。
SP 节点自身无状态:每个 SP 节点上不存储任何数据字典信息和用户数据,一个集群中可以存在多个 SP 节点。连接上任何一个 SP 节点都可以获得完整的数据库服务。

SP 具备子计划的执行能力:因为 SP 和 BP 是由同一套代码编译出来的,只是不同的启动参数决定了担任不同的角色,所以 SP 和 BP 一样具有操作符的执行能力。例如:从资源均衡利用和计算存储分离角度来考虑,DMDPC 将部分子计划安排在 SP 上执行。
支持动态增删节点。

2、数据存储节点

数据存储节点,英文全称为 Backend Processor,简称为 BP。
BP 为 DMDPC 集群中数据实际存储的节点,负责存储数据和接收 SP 的子任务调度指执行子任务,并返回结果给 SP.
一个 DMDPC 集群可配置多个 BP 节点同时提供服务,且可以随着用户业务量变化动态增删 BP 节点。为了保障 BP 节点能够持续提供服务,每一个 BP 节点又可以配置成一个 BP多副本系统。

3、元数据服务器节点

元数据服务器节点,英文全称为 Metadata Processor,?简称为 MP。
MP 为 DMDPC 集群中提供元数据服务(即字典信息服务)的节点。所有 DDL请求都会经过 SP 转发给 MP 执行,元数据信息全部存储在 MP。
-个 DMDPC 集群只能配置一个 MP 节点提供服务。为了保障 MP 节点能持续提供服务MP 节点可以配置成一个 MP 多副本系统,

(二)多副本系统 

在现实环境中,DMDPC 运行过程中有可能会碰到各种故障情况,比如系统掉电、硬件 故障(如磁盘损坏)、自然灾害(地震、火灾)等意外情况,因此需要对 BP MP 采用多副本系统架构进行存储,以保障 DMDPC 的数据安全和高可用性,避免出现数据损坏和丢失,并且可以快速恢复数据库服务,满足用户不间断提供数据库服务的要求。

DM 多副本系统由 N 个节点实例组成,N 必须是大于 1 的奇数。只有配置了 RAFT 归档的实例才能加入多副本系统。目前一个多副本系统最多支持部署 9 个节点实例。同一个 RAFT 组中的所有节点(三个或三个以上)共同构成一个多副本系统。实例之间通过 XMAL 模块进行 TCP 消息通讯。各个节点实例之间基于 RAFT 协议选举出一个领导者作为主库,其他实例作为备库(也就是副本)角色运行。主库会自动向备库同步日志,备库接收并重新应用日志,从而达到主备库之间数据保持一致的目的。

1、BP 多副本架构

如下图 展示了三个 BP 域的集群架构,每个 BP 域中都包含多个 BP 。同一个 RAFT 组的多个 BP 保存了同样数据的多个副本。例如: BP1 BP1’ BP1”三者内容完全相同。同一 个 RAFT 组中的所有 BP 节点共同构成一个 BP 多副本系统。同一个 RAFT 组中的多个副本中 只有一个作为主节点对外提供服务,其余节点均作为备份节点。当主节点发生故障后,系统 会从备份节点中( BP1’ BP1” )重新选举出新的主节点对外提供服务。
BP 多副本系统中,可通过 V$ARCH_STATUS V$RLOG_RAFT_INFO 来查看整个 系统中主备环境的运行状况。

2、MP 多副本架构

如下图展示了三个 MP 域的集群架构,每个 MP 域中最多只包含 1 MP。同一个RAFT 组的多个 MP 保存了同样数据的多个副本。例如:MP1MP1’MP1”三者内容完全相同。同一个 RAFT 中的三个 MP 节点共同构成一个 MP 多副本系统。同一个 RAFT 组中的多个副本中只有一个作为主节点对外提供服务,其余节点均作为备份节点。当主节点发生故障后,系统会从备份节点中(MP1’MP1”)重新选举出新的主节点对外提供服务。

MP 多副本系统中,可通过 V$ARCH_STATUS V$RLOG_RAFT_INFO 来查看整个系统中主备环境的运行状况。

 二、系统原理

DMDPC 中,数据根据用户指定的分布规则分布在不同的 BP 上。DMDPC 的核心在于对用户请求的并行执行。下面对 DML(查询、插入、删除、更新)和 DDL 操作流程分别进行详细说明。

(一)DML流程

DML 流程分为两种情况:一般流程和优化流程。优化流程是指在实际执行时,优化器会综合多种条件,对符合优化的细节进行优化之后形成的流程。EXPLAIN 查看执行计划时,包含 mpp_opt_flag(1)的即为优化流程下的执行计划,包含 mpp_opt_flag(0)的即为一般流程下的执行计划。

1、查询

DMDPC 架构中各节点相互配合,完成用户的查询请求。下图展示了 DMDPC 架构的查询处理流程。

下面以客户端的查询SELECT操作为例,介绍并行查询的流程。如上图中箭头序号所示。

查询请求的处理流程如下:

1. 客户端发送请求给 SP

2. SP 生成执行计划,同时 SP MP 申请获取字典信息;

3. MP 返回字典信息给 SP

4. SP 将生成的执行计划中的一个或多个子计划发送给此次查询相关的 BP

5. 相关 BP 接收并执行子计划。根据实际需要,不同 BP 间、同一 BP 不同线程间可能存在数据交换;

6. 相关 BP 在子计划执行完成时将成功与否信息和/或请求调度信息返回 SP

7. SP 向客户端返回最终查询结果。

2、插入

插入分为两种情况:值插入和查询插入。下面分别进行说明:

1. 值插入的流程

SP 端的插入操作符计算出待插入数据所属的 BP 站点,然后以站点为单位逐一发送插入操作符和待插入数据给 BPBP 端负责插入。

2. 查询插入的流程

查询插入分为查询和插入两部分。

查询部分的执行过程同前文介绍的查询流程一样。

插入分为一般流程和优化流程。一般流程:由 SP 计算记录所属的 BP 站点,然后以站点为单位发送待插入数据。优化流程:查询得到的结果直接发送给待插入表所在 BP,如果待插入表为分区表,那么数据在经过和表分布相同的分发后发送到各个 BP 上。

3、更新

更新分为一般流程和优化流程。

一般流程:SP 上查询得到了待更新的记录,计算每条记录所属的 BP 站点,而后以站点为单位发送更新前后的记录。

优化流程:查询得到的待更新记录按照更新对象的分布方式进行分发,各个 BP 站点直接进行更新,节省一次 SP 中转。可优化的情况下,支持并发更新数据行时冲突自动重试,一般流程不支持,直接报错处理。

4、删除

删除分为一般流程和优化流程。

一般流程:SP 上计算待删除记录的所属 BP 站点,以站点为单位发送待删除记录。优化流程:待删除记录按照删除表对象的分布方式进行分发,各个 BP 站点直接删除,节省一次 SP 中转开销。可优化的情况下,支持并发删除数据行时冲突自动重试,一般流程不支持,直接报错处理。

(二)DDL流程

DMDPC 中处理 DDL 请求的流程如下:

1. 客户端发送 DDL 请求给 SP

2. SP 在经过初步分析后,判断出是 DDL 请求,转发给 MP,等待 MP 响应;

3. MP 接收到 SP 转发的 DDL 请求后,根据具体类型,更改系统表;如果有 B 树创建、删除等用户数据操作,转发给相应 BP 完成;所有步骤完成后回复 SP

4. SP 根据 MP 的反馈结果向客户端报告成功或失败。

三、系统特性

DMDPC 的主要特点包括:高可用、高扩展、高性能、高吞吐量和透明性。

(一)高可用

达梦基于 RAFT 协议实现了一套全新的达梦多副本(DM Multiple Copy)系统架构。

与传统的数据守护集群架构相比,此方案不再依赖守护进程和监视器,具有节点自动选主、自动故障处理、自动故障恢复的特点,在发生故障后可以快速恢复数据库服务,满足用户不间断提供数据库服务的要求。并且少数副本出现故障或者网络延迟不会影响整个系统的正常运行,因此也更能够适应分布式集群两地三中心的部署需求。


(二)高扩展

DMDPC 集群提供达梦数据库高扩展性解决方案。根据用户业务量的变化,用户可以对集群规模进行扩展和缩小。


(三)高性能

DMDPC 架构对 OLAP OLTP 型场景都很适用。

查询的执行计划被拆分为一系列子任务,这些子计划被分散到多个 BP、SP 上执行以有效利用硬件资源;同时执行框架上采取了基于生产者、消费者的并行执行模型。不同的子任务允许有不同的并行度,同一个子任务在不同 BP 上的并行度也可以不同,并行度设置的灵活性能大大地提升线程资源的利用效率。

另外,通过将业务的不同表、或者同一表的不同分区拆分到多个 BP,甚至于多个主机,在面对高并发的 OLTP 型应用,集群可以极大地提升 IO 能力,分摊并发压力。在多副本系统中,主备库之间的日志同步采用异步通信方式,主库同步日志时不需要等待备库刷盘或重演完成,备库也以异步消息通知主库自己的日志刷盘进度,消除了主备库之间的消息同步等待时间。


(四)高吞吐量

与单节点数据库管理系统处理用户请求时的性能瓶颈相比,DMDPC 集群中,多个 BP节点可以充分利用多台物理主机的处理能力,支撑更多的用户连接请求,提供更高的吞吐量。DMDPC 集群中包含多个 BP 数据库实例,BP 数据库实例访问独立的处理器、内存。数据库实例之间通过 XMAL 模块交换数据,每个 BP 数据库实例都可以接收并处理用户的各种数据库请求。

多个 BP 节点同时提供数据库服务,有效提升集群的整体事务处理能力。


(五)透明性

DMDPC 架构逻辑对用户透明。透明性是指 DMDPC 上任意一个 SP 提供的功能与普通单机数据库基本无异。用户登录 DMDPC 的任意一个 SP 节点,即可获取完整的数据库服务。

四、基本概念和技术指标

(一)基本概念

1. 计划生成节点(SQL ProcessorSP

对外响应数据库请求,生成并调度计划。

2. 数据存储节点(Backend ProcessorBP

存储实际的数据,接收并执行发来的子计划。

3. 元数据节点(Metadata ProcessorMP

提供元数据服务。

4. BS 模式

BP 节点有两种启动模式:BP 模式和 BS 模式。

通常 BP 节点是以 BP 模式启动并运行,仅作为后台数据存储节点。

如果 BP 节点以 BS 模式启动运行,用户可直接登录 BP 进行操作,此时的 BP 同时具有前端 SP 节点的功能也具有 BP 的功能,生成分布式计划,并和 MP/其他 BP 甚至辅助 SP 进行数据交互。如果查询或修改的数据都在直连的 BP 本地,则类似于单节点,执行时无网络交互的代价,这相对于先连接到 SP,再查询或修改 BP 的模式,可获得性能上的提升。

5. 查询调度总单元(Query CoordinatorQC

SP 上,执行计划生成后拆分得到了一组子计划,执行期间由 QC 对执行计划的执行进行调度控制。

6. 查询调度子单元(Sub Query CoordinatorSQC

BP 上,为处理同一计划中的一个或者多个子计划,采用 SQC 来进行协调,为每一个子计划生成一组线程执行、协调。SQC 可以认为是 QC 在每个 BP 上的调度助手,由 SQC向 QC 汇报某一个子任务的完成情况。

7. 粒度迭代操作符(Granule IteratorGI

为充分利用 CPU 的多核特性,并发访问多个分区或者一个分区内的多个不同数据页,GI 操作符从 GIU 链表摘除任务,获取到的 GIU 信息被设置到叶子操作符中。

为充分利用 CPU 的多核特性,并发访问多个分区或者一个分区内的多个不同数据页,GI 操作符负责控制每路工作线程要访问的数据信息。

8. 子计划(Sub PlanSPLAN),子任务(Sub Task STASK

SP 所生成的计划按照通讯操作符 ERECV/ESEND 进行划分后得到的一系列小的计划单元。在计划生成阶段,这些小的计划单元被称为子计划。每个子计划可以有自己独立的并行度。在执行阶段,子计划被称为子任务。执行时,SP 将子任务分发给相关的 BP,这些子任务由 SQC 统一调度执行。子计划和子任务就是同一对象在不同阶段的名称。

9. 分区组(Partition GroupPG

分区组用于定义分区的类型、分区数量和分区字段类型等信息。创建分区表时,引用相同分区组的分区表将拥有同样的分区方式,优化器可以使用这些信息构建优化的执行计划。

10. 大规模并行处理(Massive Parallel ProcessingMPP

集群间多个主机的实例并行协作完成一个查询计划,提升查询性能。

11. 本地并行处理(Local Parallel ProcessingLPQ

同一实例内部多个线程并行协作完成一个查询计划,提升查询性能。

12. RAFT

拥有相同数据的一个或多个节点共同构成一个 RAFT组。RAFT 组中的节点个数为奇数。多副本系统基于 RAFT 算法,管理组内的节点,并始终维护一个主节点,保持 RAFT 组内的数据一致性。当 RAFT 组中含有三个或三个以上节点时,RAFT 组中的所有节点(三个或三个以上)共同构成一个多副本系统。当 RAFT 组中只有 1 个节点时,则该节点称为单副本系统。

对于 BP 来说,一个 DMDPC 架构可以配置一个或多个 RAFT 组。一个 BP 组可以包含一个或多个 RAFT 组。RAFT 组的创建不依赖于 BP 组,一个 RAFT 组既可隶属于多个 BP 组,又可独立存在,不加入任何BP组。在BP单副本系统中,一个 RAFT 组最多只能包含 1 BP

对于 MP 来说,一个 DMDPC 架构最多只能配置一个 RAFT 组。在 MP 单副本系统中,一个RAFT 组最多只能包含 1 MP。 对于 SP 来说,SP 是对用户开放的用于计算的实例进程,本身不包含数据,为了方便统

一管理,配置时也会把 SP 注册到 RAFT 组中。

13. BP 域和 MP

一个实例或一组实例所在的位置。DMDPC 中域分为两种:MP 域和 BP 域。例如:为了保证 MP 数据的安全,不至于同时被毁坏,现将两个 MP 分开部署,分别部署在 MP 域 1(北京)和 MP 2(上海)上。一个 RAFT 组在每个域上至少设有一个成员,从而使每一个域都拥有一份完整的集群数据。

一个 MP 域最多只能包含一个 MP 实例,一个 DMDPC 中的所有 MP 实例都属于同一个的 RAFT 组。

一个 BP 域包含多个 BP 实例,这些 BP 实例属于不同的 RAFT 组。

14. 容错域

容错域是多个 MPBP节点在同一个物理区域内的集合(例如机架/机房/城市/地区等),它可以是 DMDPC 系统中所有 MP BP 节点的全集、子集或空集。

容错域内可以同时存在 MP BP,不允许 SP;每个容错域内包含 0-N 个不同 RAFT 组内的节点;同一个 RAFT 组内的不同节点不能包含在同一个域内。

在实际业务中,为了考虑数据的安全性,至少要求在一个物理区域内部署的节点数不能超过半数,否则该物理区域发生故障(例如机器)时,其他副本将无法接管。

15. BP

BP 组是个逻辑概念,它是 BP RAFT 组的集合,可作为 DPC 系统中所有 BP RAFT 组合的全集或子集,甚至可以为空集。

一个 BP 组由一个或多个 BP RAFT 实例组成,这些实例可以来自不同的 BP 域,也可以来自同一 BP 域。各个 BP 组所包含的 RAFT 组互不相关。BP 组只是用来简化用户建表操作

中对存储 BP 的指定,实际使用中也可不创建任何 BP 组。指定 BP 组创建的分区表的数据,其数据按子表为单位分布在不同的组内 BP 上。一个子表的数据只能属于一个 BP,一个 BP可以管理多个子表。其具体分布方式按分区类型以及分区数量的不同由系统确定。

16. SP

SP 组是个逻辑概念,它是 SP RAFT 组的集合,可作为 DPC 系统中所有 SP RAFT 组集合的全集或子集,甚至可以为空集。

一个 SP 组由一个或多个 SP RAFT 组成。SP 组的作用是将不同用户、不同应用使用的计算节点进行隔离,以便更好地管理硬件资源。

SP 组的存在会影响计划生成阶段所使用的计算节点。

17. 表空间

DM 数据库中,表空间由一个或者多个数据文件组成。DM 数据库中的所有对象在逻辑上都存放在表空间中,而物理上都存储在所属表空间的数据文件中。

18. 表空间组

表空间组是一组位于相同 RAFT 或者不同 RAFT 上的表空间集合,用于用户建表或者指定用户默认的存储位置。表空间组中的表空间可动态扩展和收缩。且能同时包含非 HUGE表的普通表空间和 HUGE 表专用的大表空间。

19. 日志包(Rlog PackageRLOG_PKG

保存物理事务产生的 Redo 日志的数据单元。

20. 日志包的全局包序号(Global Sequence NumberG_SEQNO

全局包序号由多副本系统中的主备库共同维护,具有全局唯一、连续、递增的特性。

21. 日志包的本地包序号(Local Sequence NumberL_SEQNO

本地包序号由多副本系统中的主备库各自在本地维护,具有本地唯一、连续、递增的特性。

22. 已刷盘的最大全局包序号(File Sequence NumberF_SEQNO

已写入联机日志文件的最大 G_SEQNO,在日志包刷盘时修改维护。

23. 已刷盘的最大 LSN 全局包序号(File Log Sequence NumberF_LSN

已写入联机日志文件的最大 LSN,在日志包刷盘时修改维护。

24. RAFT 协议

一种分布式数据一致性协议。RAFT 协议包括领导者选举、日志同步、日志安全(提交到多数节点的日志不会丢失)和角色转换等关键算法。

一个多副本集群会包含若干节点,在任何时刻,每一个节点都处于一种角色(领导者、跟随者、候选者)。在不同的场景中,角色可发生转换。正常情况下,一个多副本系统中只有一个领导者和若干跟随者。发起选举时,发起者(跟随者或候选者)会转换为候选者,选举结束时推选出一个领导者和若干跟随者,此时候选者会相应地转换成领导者或跟随者。

25. 领导者(LEADER

RAFT 协议中的领导者。

26. 跟随者(FOLLOWER

RAFT 协议中的跟随者。

27. 候选者(CANDIDATE

RAFT 协议中的候选者,发起选举时会切换为此角色。

28. 学习者(LEARNER

RAFT 协议中的学习者,动态增加节点时的临时角色,不参与选举和日志推进。当学习者成功加入多副本集群,成为一名正式成员后,才可以转换为 CANDIDATE、FOLLOWER或 LEADER 角色。

29. 领导者任期号(Leader TermIDL_TERM_ID

RAFT 协议中当前领导者的任期号,在每次发起选举时递增。

30. 已刷盘的任期号(TERM_ID

已写入联机日志文件中的最后一个日志包的任期号,此任期号小于等于 L_TERM_ID

31. 已提交的包序号(Commit SeqnoC_SEQNO

已提交到联机日志文件中的最大全局包序号。

32. 已提交的 LSNCommit LSNC_LSN

已提交到联机日志文件中的最大全局包序号的 MAX_LSN

33. XMAL 系统

XMAL 系统是基于 TCP/IP 协议实现的一种内部通信机制,具有可靠、灵活、高效的特性。XMAL 专门用于 DMDPC 分布式架构中。DM 通过 XMAL 系统实现 REDO 日志传输,以及其他一些实例间的消息通信。

DMDPC 使用 XMAL 系统管理各部件节点网络信息,建立节点间的通信机制。用户只需要将 SP BP 节点的 IP 地址和端口等信息注册到 MP 上即可,使得增删节点的部署能够做到快速且便捷。XMAL 系统负责自动建立节点间的 TCP 通讯链路,每个节点对应一个站点编号,采用消息盒子(XBOX)的方式进行通信,只要指定站点编号和消息盒子编号即可实现节点之间的点对点消息收发。XBOX 是用来存放和管理消息的一块内存区域。

XMAL 相关的 INI 参数有 DPC_SYNC_TOTAL XBOX_MEMORY_TARGET、 XBOX_DUMP_THRESHOLDXBOX_DUMP_PATH STMT_XBOX_REUSE 等。

(二)技术指标

1. BP 上的最大存储空间为 PB 级;

2. 最大 SP 组和 BP 组总数为 1024

3. 最大的 RAFT 组数(包括 MP/SP/BP)为 1024

4. 最大的实例数(包括 MP/SP/BP)为 4096

5. 最大副本数为 9

6. 最大表空间组个数 65534

7. 一个表空间组中的最大表空间个数 1536

8. 每个容错域至多包含 4096 个实例节点;

9. 其它指标和普通单机数据库一样。

 更多内容查看:

达梦数据库 - 新一代大型通用关系型数据库 | 达梦在线服务平台

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值