达梦数据库系列—22. DPC集群原理

news2024/11/18 18:17:06

目录

DPC原理

1、系统原理

2、元数据服务

3、数据存储

4、执行计划的生成

5、计算与存储分离

6、动态增删节点

7、分布式事务一致性

第一阶段 预提交

第二阶段 提交

8、RAFT 归档

9、自动故障处理


DPC原理

计划生成节点(SP)对外响应数据库请求,生成并调度计划。

数据存储节点(BP)存储实际的数据,接收并执行发来的子计划。

元数据节点(MP)提供元数据服务。

1、系统原理

RAFT组

bp11   bp12  bp13   raft1    tbs1

bp21   bp22  bp23   raft2    tbs2

1.每个表空间只能指定一个raft组,创建的时候指定。

        例:CREATE TABLESPACE TS_1 DATAFILE 'TS_1.DBF' SIZE 128 STORAGE( ON RAFT_1);

        创建好后的raft组节点可以更改吗?

        可以通过增加删除的方式更改,但要注意数据的手动迁移:

        增加:

        SP_CREATE_DPC_INSTANCE('RAFT_1', 'BP11', 'BP', 6002, 5238, '192.168.64.133', '192.168.64.133','STANDBY', 0, 'BP instance');

        删除:

        SP_DROP_DPC_INSTANCE('BP_1');

        表空间可以整体从raft1迁移到raft2吗?

        是可以的:alter tablespace ts_01 move to raft_2;

2.创建表,以及每个分区,可以STORAGE语句指定不同的表空间

        表的迁移?

        表有很多个分区,每个分区在一个表空间上

        那么表的某个分区可以从一个表空间(raft1)迁移到另一个表空间(raft2)上吗?

        可以的:alter table test22 move partition PAR5 to TS_1;

        整个表的迁移,需要一个一个分区进行迁移。

查询

  1. 客户端发送请求给 SP;
  2. SP 生成执行计划,同时 SP 向 MP 申请获取字典信息;
  3. MP 返回字典信息给 SP;
  4. SP 将生成的执行计划中的一个或多个子计划发送给此次查询相关的 BP;
  5. 相关 BP 接收并执行子计划。根据实际需要,不同 BP 间、同一 BP 不同线程间可能存在数据交换;
  6. 相关 BP 在子计划执行完成时将成功与否信息和/或请求调度信息返回 SP;
  7. SP 向客户端返回最终查询结果。

插入/更新

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

2、元数据服务

        在 DMDPC 中,为了简化 DDL 的处理,使用专门的元数据服务器 MP 负责管理所有的字典对象元数据信息。所有 SP 和 BP 都是通过网络请求从 MP 获取字典对象的。

        SP 获取字典对象的步骤如下:

  1. SP 在自己的字典缓存中查找是否有该对象的缓存,如果有则直接使用该对象,否则执行步骤 2;
  2. SP 向 MP 发出请求,获取某个特定 ID 的字典对象;
  3. MP 接收请求后从系统表中加载对应的字典对象,然后返回 SP;
  4. SP 解包 MP 返回的字典对象并添加到自己的缓存中。

3、数据存储

        DMDPC 的数据存储在各个 BP 中。

        表空间的元数据信息由 MP 进行管理。所有本地表空间元信息都记录在 MP 的控制文件中。

4、执行计划的生成

        DMDPC 的执行计划是在单机数据库执行计划的基础上插入了数据交换操作符 ESEND/ERECV 后形成的。数据交换操作符的插入只发生在特定的操作符中。例如:连接、分组、排序等。

5、计算与存储分离

        将数据获取相关的子计划放在 BP 上,中间层计算相关的子任务放在一个或多个 SP 上执行。当连接和分组、去重等操作需要用到多个计算节点时,优化器会从 DMDPC 集群选择多个 SP 节点。

XMAL 系统

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

        DMDPC 使用 XMAL 系统管理各部件节点网络信息,建立节点间的通信机制。用户只需要将 SP 和 BP 节点的 IP 地址和端口等信息注册到 MP 上即可,使得增删节点的部署能够做到快速且便捷。

6、动态增删节点

横向增删:

        支持删除 SP 组、BP 组、RAFT 组、BP 节点或 SP 节点:

  1. 只有正常退出的 SP 节点才能删除;
  2. 没有数据的 RAFT 组内节点才能删除。如果想删除包含数据的 BP 节点,必须先将此节点上的数据迁移到其他分区,具体见“数据迁移”;
  3. 删除 RAFT 组必须先删除组内包含的所有节点;

纵向增删:

7、分布式事务一致性

        DMDPC 通过两阶段提交技术来保证多个 BP 之间的分布式事务一致性。

        SP 作为全局事务的协调者,统一处理全局事务。BP 作为参与者,是被 SP 调度并执行事务的节点。

第一阶段 预提交

  1. 客户端向 SP 发起事务提交请求。
  2. SP 向所有参与者 BP 广播预提交命令。询问是否可以进行事务 COMMIT,并等待 BP 的响应。
  3. BP 接收到预提交命令之后,将相关操作生成回滚日志写入回滚段并响应 SP。
  4. 如果 SP 收到所有参与者 BP 的预提交成功的消息,则进入第二阶段进行提交。否则,当存在 BP 没有响应导致 SP 无法确定该 BP 是否执行了预提交时,SP 先尝试通知存活 BP 执行回滚。若有 BP 回滚成功,SP 就可以直接响应“事务提交失败”给客户端;

第二阶段 提交

  1. SP 向所有参与者 BP 广播 COMMIT 命令。
  2. BP 接收到提交命令之后,执行二阶段的提交任务,释放事务资源,并将 COMMIT 成功结果反馈给 SP。
  3. SP 收到所有参与者 BP 的 COMMIT 成功消息之后,直接响应客户端事务提交成功。二阶段提交时若遇到 BP 与 SP 通信中断,SP 会将提交任务交由异步任务进行处理并立即响应客户端事务提交成功。

        全局时钟(GTS)值由 MP 节点统一管理。BP 节点执行事务内的每条语句、执行预提交、提交操作时均会向 MP 申请当前的全局时钟值。

事务对数据进行操作时,BP 都会向 MP 申请当前的全局时钟值 cur_seq。只要是当前事务操作时钟值 cur_seq 之前的已提交事务修改的数据,对当前事务都是可见的。

  1. 当事务对数据进行修改时,日志记录中会登记修改该数据的事务号 TID。
  2. 当事务执行一阶段预提交时,CA 中会登记 TID、预提交状态和预提交时的时钟值。
  3. 当事务二阶段提交时,MCA 会登记 TID 和提交时的时钟值,CA 会将第 2 步中登记的信息更新为最终的提交状态和提交时的时钟值。

8、RAFT 归档

        多副本系统中的主库通过 RAFT 归档方式向备库同步数据。RAFT 归档将主库产生的 Redo 日志通过 XMAL 模块传递到备库。

        RAFT 归档的执行流程是主库在 Redo 日志(RLOG_PKG)写入联机日志文件前,将 Redo 日志发送到备库,并且不需要等待备库的响应消息,主库继续往下正常执行。备库收到 Redo 日志(RLOG_PKG)后,将日志包加入日志重演任务系统,在日志包写入本地日志文件后,发送日志刷盘消息给主库,主库根据此消息确定是否需要推进 C_SEQNO 和 C_LSN。

C_SEQNO 是已经提交的日志包序号,C_LSN 是已经提交的 C_SEQNO 日志包中的最大 LSN。

9、自动故障处理

        当出现硬件故障(掉电、存储损坏等)原因导致主库无法启动,或者是主库内部网卡故障导致主库短期不能恢复正常的情况下,剩余活动节点会自动启动选举流程,选出新的主库,其他节点仍然作为备库运行,选举完成后,多副本集群仍可对外提供服务。

        选举新主库的前提条件是活动节点个数需超过配置的总节点个数的一半。

        备库出现故障时,主库发送心跳或者日志包失败后,会将其归档状态失效,不再向故障备库同步数据。

        主库故障恢复时,多副本系统中如果已经有新主库,则会自动将老主库切换为备库重新加入多副本系统,并自动向其发起异步数据同步,直到主备库数据完全同步一致。

        备库故障恢复后,多数情况下仍然是作为跟随者重新加入多副本系统,除非重新加入时没有活动主库才会尝试选举为新主库。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1900166.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

猫狗图像分类-划分数据集

📚博客主页:knighthood2001 ✨公众号:认知up吧 (目前正在带领大家一起提升认知,感兴趣可以来围观一下) 🎃知识星球:【认知up吧|成长|副业】介绍 ❤️如遇文章付费,可先看…

[FreeRTOS 基础知识] 互斥量 概念

文章目录 基础知识互斥量互斥量与信号量区别优先级反转优先级继承小结 基础知识 [FreeRTOS 基础知识] 信号量 概念 互斥量 互斥量(Mutex,全称:Mutual Exclusion),在计算机科学中,是一种用于防止多个进程同…

大学教师门诊预约小程序-计算机毕业设计源码73068

摘要 在当今数字化、信息化的浪潮中,大学校园的服务管理正朝着智能化、便捷化的方向迈进。为了优化大学教师的医疗体验,提升门诊预约的效率和便捷性,我们基于Spring Boot框架设计并实现了一款大学教师门诊预约小程序。该小程序不仅提供了传统…

压测工具---Ultron

压测工具:Ultron 类型:接口级和全链路 接口级 对于接口级别的压测我们可以进行 http接口压测、thrift压测、redis压测、kafka压测、DDMQ压测、MySQL压测等,选对对应的业务线、选择好压测执行的时间和轮数就可以执行压测操作了 全链路 对…

SAP PS学习笔记01 - PS概述,创建Project和WBS

本章开始学习PS(Project System)。 1,PS的概述 PS(Project System)是SAP企业资源规划系统中的一个关键模块,主要用于项目管理。 它提供了一个全面的框架来规划、控制和执行项目,涵盖了从项目启…

游戏AI的创造思路-技术基础-强化学习(1)

我们“强化”一下机器的“学习”,让机器变得更强~~~~ 目录 1. 强化学习的定义 2. 发展历史 3. 强化学习的基本概念和函数 3.1. 基本概念和函数 3.1.1. 基本概念和函数 3.1.2. Q函数 3.1.2.1. 定义与作用 3.1.2.2. 数学表示 3.1.2.3. 更新规则 3.1.2.4. 算…

3D Web轻量化平台HOOPS Web Platform的功能与应用分析

随着3D技术在多个行业的广泛应用,对于3D模型轻量化的需求日益增长。HOOPS Web Platform作为一个先进的3D模型轻量化平台,为开发人员提供了一整套工具来构建和部署基于Web的工程应用程序。本文将分析HOOPS Web Platform的核心功能和它在不同领域的应用情况…

ORB 特征点提取

FAST关键点 选取像素p,假设它的亮度为Ip; . 设置一个阈值T(比如Ip的20%); 以像素p为中心,选取半径为3的圆上的16个像素点; 假如选取的圆上,有连续的N个点的亮度大于IpT或小于…

CSS position属性之relative和absolute

目录 1 参考文章2 五个属性值3 position:static4 position:relative(相对)5 position:absolute(绝对) 1 参考文章 https://blog.csdn.net/lalala_dxf/article/details/123566909 https://blog.csdn.net/WangMinGirl/article/deta…

【C语言】字符函数和字符串函数的介绍和模拟实现

介绍处理字符和字符串的库函数的使用和注意事项 求字符串长度 strlen 长度不受限制的字符串函数 strcpy strcat strcmp 长度受限制的字符串函数介绍 strncpy strncat strncmp 0. 前言 C语言中对字符和字符串的处理很是频繁,但是C语言本身是没有字符串类型的&am…

实现沉浸式体验的秘诀:深入了解折幕投影技术!

在当今多媒体技术的浪潮中,投影技术已蜕变成为超越传统内容展示范畴的非凡工具,它深度融合了互动性与沉浸感,成为连接观众与虚拟世界的桥梁。折幕投影技术,作为这一领域的璀璨明珠,更是以其独特而神奇的手法&#xff0…

超过GPT-4V,国产开源多模态大模型来了!支持视频理解/超高分辨率图片理解/多轮对话...

扫码领取享50优惠!随时可用,先到先得! 大家好,开源多模态大模型真的是每天都在疯狂的涌现,今天分享一个国产大模型 InternLM-XComposer-2.5 中文名:浦语灵笔2.5 仅使用 7B LLM 后端就达到了 GPT-4V 级别的能…

第一百四十五节 Java数据类型教程 - Java字符串类型

Java数据类型教程 - Java字符串类型 零个或多个字符的序列称为字符串。 在Java程序中,字符串由java.lang.String类的对象表示。 String类是不可变的。 String对象的内容在创建后无法修改。 String类有两个伴随类,java.lang.StringBuilder和java.lang.…

独立开发者系列(20)——扫码登录

(1)网页端的安全登录设计 很多大型网站都有登录限制。这里以一个案例作为例子完整解析。理解安全的登录设计方式,无论对于以后做自动化,自动登录网站,获取数据,还是自己开发月租类型的系统非常有用。当前一…

在AvaotaA1全志T527开发板上使用AvaotaOS 部署 Docker 服务

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。 准备…

高考选专业,兴趣与就业前景该如何平衡?

从高考结束的那一刻开始,有些家长和学生就已经变得焦虑了,因为他们不知道成绩出来的时候学生应该如何填报志愿,也不知道选择什么样的专业,毕竟大学里面的专业丰富多彩,如何选择确实是一门学问,而对于学生们…

8分钟带你快速了解Connector/Catalog API的核心设计

引言 在现代大数据应用中,数据集成和同步成为企业数据管理的关键环节。随着数据源和数据库的多样化,如何高效地进行数据集成成为企业面临的重要挑战。 Apache SeaTunnel 作为一款开源的数据集成工具,致力于解决这一问题。本文将详细介绍 Sea…

小酌消烦暑|人间正清欢

小暑是二十四节气之第十一个节气。暑,是炎热的意思,小暑为小热,还不十分热。小暑虽不是一年中最炎热的时节,但紧接着就是一年中最热的节气大暑,民间有"小暑大暑,上蒸下煮"之说。中国多地自小暑起…

w3wp.exe 中发生未处理的 Microsoft ,NETFramework 异常。

🏆本文收录于「Bug调优」专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&…

Net5.5G,全球运营商的AI之翼

2024年,什么是全球运营商最关注的机遇?人工智能应该是当之无愧的第一答案。 根据市场研究机构Omdia发布的数据报告显示,人工智能在电信运营商向科技公司转型的过程中发挥关键作用,多数领先电信运营商都在加强人工智能的能力建设&a…