一、DMDPC 概述
达梦分布式计算集群英文全称 DM Distributed Processing Cluster,简称 DMDPC。
DMDPC 是基于达梦数据库管理系统研发的一款同时支持在线分析处理和在线事务处理的新型分布式数据库系统。它既具备传统单机数据库的绝大部分功能,具备全 SQL 支持、完整的事务支持、与已有单机架构兼容以及对应用透明等特点又提供了分布式数据库才拥有的高可用、高扩展、高性能、高吞吐量等高级特性。
二、DMDPC 系统架构
一个完整的 DMDPC 架构由计划生成节点 SP、数据存储节点 BP 和元数据服务器节点 MP 三部分组成。SP 对外提供分布式数据库服务,用户可以登录到任意一个 SP 节点,获得完整的数据库服务;BP 负责存储数据,执行 SP 的调度指令并将执行结果返回给 SP;MP 负责存储元数据并向 SP、BP 提供元数据服务。
SP 节点不存储数据,配置成单机即可。MP 和 BP 节点既可以配置成单机,也可以配置成多副本系统。其中每一个多副本系统中只有一个作为主节点,其余节点均作为备份节点。
下图是一个典型的配有多副本系统的 DMDPC 架构图:
2.1 SP 节点
计划生成节点,英文全称为 SQL Processor,简称为 SP。
SP 为 DMDPC 集群中对外提供数据库服务的节点,负责接收用户请求并生成计划、划分子计划、按照一定规则计算并行度并调度各个子计划,并最终将执行结果返回给用户。该节点的实现在已有的成熟达梦单机数据库处理框架的基础上新增了分布式计算处理。
2.2 BP 节点
数据存储节点,英文全称为 Backend Processor,简称为 BP。
BP 为 DMDPC 集群中数据实际存储的节点,负责存储数据和接收 SP 的子任务调度指令,执行子任务,并返回结果给 SP。
一个 DMDPC 集群可配置多个 BP 节点同时提供服务,且可以随着用户业务量变化动态增删 BP 节点。为了保障 BP 节点能够持续提供服务,每一个 BP 节点又可以配置成一个 BP 多副本系统。
2.3 MP 节点
元数据服务器节点,英文全称为 Metadata Processor,简称为 MP。
MP 为 DMDPC 集群中提供元数据服务(即字典信息服务)的节点。所有 DDL 请求都会经过 SP 转发给 MP 执行,元数据信息全部存储在 MP。
一个 DMDPC 集群只能配置一个 MP 节点提供服务。为了保障 MP 节点能持续提供服务,MP 节点可以配置成一个 MP 多副本系统。
2.4 多副本系统
在现实环境中,DMDPC 运行过程中有可能会碰到各种故障情况,比如系统掉电或者出现硬件故障(如磁盘损坏)、自然灾害(地震、火灾)等极端情况,因此需要对 BP 或 MP 采用多副本系统架构进行存储,以保障 DMDPC 的数据安全和高可用性,避免出现数据损坏和丢失,并且可以快速恢复数据库服务,满足用户不间断提供数据库服务的要求。
DM 多副本系统由 N 个节点实例组成,N 必须是大于 1 的奇数。只有配置了 RAFT 归档的实例才能加入多副本系统。
目前一个多副本系统最多支持部署 9 个节点实例。同一个 RAFT 组中的所有节点(三个或三个以上)共同构成一个多副本系统。实例之间通过 XMAL 模块进行 TCP 消息通讯。各个节点实例之间基于 RAFT 协议选举出一个领导者作为主库,其他实例作为备库(也就是副本)角色运行。主库会自动向备库同步日志,备库接收并重新应用日志,从而达到主备库之间数据保持一致的目的。
2.4.1 BP 多副本架构
如下图展示了三个 BP 域的集群架构,每个 BP 域中都包含多个 BP。同一个 RAFT 组的多个 BP 保存了同样数据的多个副本。例如:BP1、BP1’和 BP1”三者内容完全相同。同一个 RAFT 组中的所有 BP 节点共同构成一个 BP 多副本系统。同一个 RAFT 组中的多个副本中只有一个作为主节点对外提供服务,其余节点均作为备份节点。当主节点发生故障后,系统会从备份节点中(BP1’,BP1”)重新选举出新的主节点对外提供服务。
在 BP 多副本系统中,可通过 VARCH_STATUS 和 VRLOG_RAFT_INFO 来查看整个系统中主备环境的运行状况。
2.4.2 MP 多副本架构
如下图展示了三个 MP 域的集群架构,每个 MP 域中最多只包含 1 个 MP。同一个 RAFT 组的多个 MP 保存了同样数据的多个副本。例如:MP1、MP1’和 MP1”三者内容完全相同。同一个 RAFT 中的三个 MP 节点共同构成一个 MP 多副本系统。同一个 RAFT 组中的多个副本中只有一个作为主节点对外提供服务,其余节点均作为备份节点。当主节点发生故障后,系统会从备份节点中(MP1’,MP1”)重新选举出新的主节点对外提供服务。
在 MP 多副本系统中,可通过 VARCH_STATUS 和 VRLOG_RAFT_INFO 来查看整个系统中主备环境的运行状况。
三、DMDPC 使用的环境
软硬件环境 | 环境介绍 |
---|---|
主机(一台或多台) | 内存:2GB 以上 测试环境中可以将上述服务部署到同一主机,生产环境下推荐每个主机只部署一种类型服务器 |
操作系统 | Linux、Unix、Windows 等 |
DM 数据库软件 | DM8.0 及以上版本 |
其他 DM 软件 | dmserver、dminit、DIsql 等。这些软件位于安装目录的 bin、tool 等子目录中 |
四、DMDPC 系统原理
在 DMDPC 中,数据根据用户指定的分布规则分布在不同的 BP 上。DMDPC 的核心在于对用户的请求并行执行。下面对 DML(查询、插入、删除、更新)和 DDL 操作流程分别进行详细说明。
DML 流程分为两种情况:一般流程和优化流程。
优化流程是指在实际执行时,优化器会综合多种条件,对符合优化的细节进行优化之后形成的流程。EXPLAIN 查看执行计划时,包含 mpp_opt_flag(1) 的即为优化流程下的执行计划,包含 mpp_opt_flag(0) 的即为一般流程下的执行计划。
DMDPC 中处理 DDL 请求的流程如下:
- 客户端发送 DDL 请求给 SP;
- SP 在经过初步分析后,判断出是 DDL 请求,转发给 MP,等待 MP 响应;
- MP 接收到 SP 转发的 DDL 请求后,根据具体类型,更改系统表;如果有 B 树创建、删除等用户数据操作,转发给相应 BP 完成;所有步骤完成后回复 SP;
- SP 根据 MP 的反馈结果向客户端报告成功或失败。
五、DMDPC 系统特性
DMDPC 的主要特点包括:高可用、高扩展、高性能、高吞吐量和透明易用等。
5.1 高可用
基于 RAFT 协议的全新达梦多副本架构,具有节点自动选主、自动故障处理、自动故障恢复的特点,满足不间断提供数据库服务的要求。并且少数副本出现故障或者网络延迟不会影响整个系统的正常运行,因此也更能够适应分布式集群两地三中心的部署需求。
5.2 高可扩展
支持自动扩缩容功能。用户根据数据规模和负载变化,在不影响的业务情况下,便捷地扩展或缩小集群规模。
5.3 高性能
DMDPC 架构对 OLAP 和 OLTP 型场景都很适用。
查询的执行计划被拆分为一系列子任务,这些子计划被分散到多个 BP、SP 上执行以有效利用硬件资源;同时执行框架上采取了基于生产者、消费者的并行执行模型。不同的子任务允许有不同的并行度,同一个子任务在不同 BP 上的并行度也可以不同,并行度设置的灵活性能大大地提升线程资源的利用效率。
另外,通过将业务的不同表、或者同一表的不同分区拆分到多个 BP,甚至于多个主机,在面对高并发的 OLTP 型应用,集群可以极大地提升 IO 能力,分摊并发压力。
在多副本系统中,主备库之间的日志同步采用异步通信方式,主库同步日志时不需要等待备库刷盘或重演完成,备库也以异步消息通知主库自己的日志刷盘进度,消除了主备库之间的消息同步等待时间。
5.4 高吞吐量
与单节点数据库管理系统处理用户请求时的性能瓶颈相比,DMDPC 集群中,多个 BP 节点可以充分利用多台物理主机的处理能力,支撑更多的用户连接请求,提供更高的吞吐量。
DMDPC 集群中包含多个 BP 数据库实例,BP 数据库实例访问独立的处理器、内存。数据库实例之间通过 XMAL 模块交换数据,每个 BP 数据库实例都可以接收并处理用户的各种数据库请求。
多个 BP 节点同时提供数据库服务,有效提升集群的整体事务处理能力。
5.5 透明性
用户登录 DMDPC 的任意一个计算节点,即可获取完整的数据库服务,具备全 SQL 支持、完整的事务支持,架构逻辑对用户透明,降低了分布式数据库落地的工作量成本。