达梦分布式集群DPC_架构详解_yxy

news2025/2/15 12:13:21

达梦分布式集群DPC_架构详解

  • 1 DPC核心架构介绍
    • 1.1 架构图
    • 1.2 DPC核心架构组件
  • 2 多副本
    • 2.1 多副本架构图
    • 2.2 多副本示例
    • 2.3 RAFT组概念
    • 2.4 表空间与RAFT组的关系

1 DPC核心架构介绍

1.1 架构图

在这里插入图片描述

1.2 DPC核心架构组件

DMDPC 架构由三部分组成
SP(SQL Processor):计算节点
MP(Metadata Processor):元数据节点
BP(Backend Processor):数据存储节点

SP
①对外提供分布式数据库服务,用户可以登录到任意一个 SP 节点,获得
完整的数据库服务;
②不存储数据,所以SP都是单机,可以横向扩展(多个SP节点),不能多副本;

BP
①负责存储表真实数据,一般是多副本;
②执行 SP 的调度指令并将执行结果返回给 SP;

MP
①负责存储元数据(表结构等信息),一般是多副本;
②向 SP、BP 提供元数据服务;

2 多副本

2.1 多副本架构图

在这里插入图片描述

2.2 多副本示例

DPC基于 RAFT 协议实现了一套全新的达梦多副本(DM Multiple Copy)系统架构。
类似于主备系统,主库挂了备库能立即切换为主,实现高可用性;

例如:
①单机架构

服务器1服务器2服务器3服务器4
SPMPBP1BP2
Ⅰ.其中BP节点可以横向扩展(MP不行),比如新增BP3,4,5...,BP越多,表数据分配到所有BP节点后,能利用的资源越多,性能就越高;

这里举个例子:
一个分区表TEST,通过ID列做HASH分区,分成5个子表,建表语句为:

create table TEST(
"ID" INT,
"NAME" VARCHAR2(20),
)
PARTITION BY HASH("ID")
PARTITIONS 5;

如果把5个子表分配到5个BP上,那么通过ID列去查询数据时,就能利用5台服务器资源;

Ⅱ.单机架构MP和BP都只有一份数据,如果其中一个节点发生故障,整个集群就不能正常提供服务,所以可以部署多副本架构,给MP和BP1,BP2都新增两个副本;

②多副本架构

服务器1服务器2服务器3服务器4
SPMPBP1BP2
MP_备1BP1_备1BP2_备1
MP_备2BP1_备2BP2_备2
新增备库后,当主库BP1实例挂掉,BP1_备1或者BP1_备2就能选举为主库来提供服务,实现高可用性

2.3 RAFT组概念

拥有相同数据的一个或多个节点共同构成一个 RAFT组。RAFT 组中的节点个数为奇数。

当 RAFT 组中只有 1 个节点时,则该节点称为单副本系统(单机)。

例如
①比如上述例子中的的BP1,BP1_备1,BP1_备2就构成一个RAFT组(MP和BP2同理),它们数据完全一致,一个RAFT组内的实例数据完全相同;

②一个RAFT组内只有一个为主库提供服务;

③类似于一个RAFT组 = 一个主备系统(RAFT内是异步同步);

2.4 表空间与RAFT组的关系

每个表空间必须关联一个RAFT组,创建时指定存储位置。
相当于表空间要指定存储在哪个BP上

例如

CREATE TABLESPACE TS_1 DATAFILE 'TS_1.DBF' SIZE 128 STORAGE(ON RAFT_1);
--表空间TS_1存储在RAFT_1上(BP1上);

CREATE TABLESPACE TS_2 DATAFILE 'TS_2.DBF' SIZE 128 STORAGE(ON RAFT_2);
--表空间TS_2存储在RAFT_2上(BP2上);

后续建表时,才能每个子表单独指定不同的表空间,实现数据分布在多台BP上(不同数据节点上)

CREATE TABLE "TEST01"
(
"ID" VARCHAR2(36) NOT NULL,
"DATE" TIMESTAMP(0) NOT NULL)
PARTITION BY HASH("ID")
(
PARTITION  "DMHASHPART0"   STORAGE(ON "TS_1") ,
PARTITION  "DMHASHPART1"   STORAGE(ON "TS_2") 
) STORAGE(HASHPARTMAP(1), ON "TS_1") ;

更多其他数据库相关专栏:
数据库性能优化(sql优化)_基本思路_yxy
数据库性能优化(sql优化)_索引详解01_yxy(共4篇)
数据库性能优化(sql优化)_SQL执行计划01_yxy(共3篇)
数据库性能优化(sql优化)_统计信息_yxy

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

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

相关文章

51单片机独立按键的扩展应用

提示: 按键S7和S6为选择键,确定控制键控制那组LED指示灯。按键S5和S4为控制键,按键该键点亮指定的LED指示灯,松开后熄灭。按下S7点亮L1指示灯,L1点亮后,S6不响应操作,S5控制L3,S4控…

Golang GORM系列:GORM事务及错误处理

在数据库管理领域,确保数据完整性至关重要。GORM是健壮的Go对象关系映射库,它为开发人员提供了维护数据一致性和优雅地处理错误的基本工具。本文是掌握GORM事务和错误处理的全面指南。我们将深入研究如何使用事务来保证原子性,并探索有效处理…

如何实现对 ELK 各组件的监控?试试 Metricbea

上一章基于 Filebeat 的日志收集使用Filebeat收集文件中的日志,而Metricbeat则是收集服务器存活性监测和系统指标的指标。 1. Filebeat和Metricbeat的区别 特性FilebeatHeartbeat作用收集和转发日志监测服务可用性数据来源服务器上的日志文件远程主机、API、服务主…

【微服务学习二】nacos服务发现与负载均衡

nacos服务发现 想要开启服务发现,需要在main函数上添加 EnableDiscoveryClient 注解 然后我们编写一个controller类来查询nacos中注册的所有微服务以及对应的ip端口号 Controller public class DiscoveryController {AutowiredDiscoveryClient discoveryClient;//…

深入剖析推理模型:从DeepSeek R1看LLM推理能力构建与优化

著名 AI 研究者和博主 Sebastian Raschka 又更新博客了。原文地址:https://sebastianraschka.com/blog/2025/understanding-reasoning-llms.html。这一次,他将立足于 DeepSeek 技术报告,介绍用于构建推理模型的四种主要方法,也就是…

Kafka分区管理大师指南:扩容、均衡、迁移与限流全解析

#作者:孙德新 文章目录 分区分配操作(kafka-reassign-partitions.sh)1.1 分区扩容、数据均衡、迁移(kafka-reassign-partitions.sh)1.2、修改topic分区partition的副本数(扩缩容副本)1.3、Partition Reassign场景限流1.4、节点内副本移动到不…

AIoT时代来临,物联网技术如何颠覆未来生活?

在这个万物互联的时代,“物联网”(IoT)正以前所未有的速度改变我们的生活,而“AIoT”则是在物联网基础上融入人工智能技术,赋予设备更高的智能和自主决策能力。随着5G、边缘计算和云技术的不断发展,物联网正…

基于SpringBoot的电影院售票管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…

深度学习与人工智能:解锁未来的无限可能

在当今这个科技飞速发展的时代,深度学习和人工智能已不再只是科幻小说中的概念,它们正以惊人的速度渗透到我们生活的方方面面,从智能手机上的语音助手到医疗领域的疾病诊断,从自动驾驶汽车到金融市场的风险预测,其影响…

2025年02月14日Github流行趋势

项目名称:data-formulator 项目地址url:https://github.com/microsoft/data-formulator项目语言:TypeScript历史star数:5921今日star数:820项目维护者:Chenglong-MS, danmarshall, apps/dependabot, micros…

华为云+硅基流动使用Chatbox接入DeepSeek-R1满血版671B

华为云硅基流动使用Chatbox接入DeepSeek-R1满血版671B 硅基流动 1.1 注册登录 1.2 实名认证 1.3 创建API密钥 1.4 客户端工具 OllamaChatboxCherry StudioAnythingLLM 资源包下载: AI聊天本地客户端 接入Chatbox客户端 点击设置 选择SiliconFloW API 粘贴1.3创…

【github】docker realtime

Linux和Docker实时指南,适用于Ubuntu实时内核和PREEMPT_RT ReadMe.md 作者:Tobit Flatscher(2021 - 2024) 概述 本指南解释了如何在Linux操作系统内开发/部署运行实时代码的Docker容器。因此,它会带你了解&#xf…

MySQL官网驱动下载(jar包驱动和ODBC驱动)【详细教程】

1.打开MySQL的官网,选择下载(Download) MySQL[这里是图片001]https://www.mysql.com/cn/ 2.往下划点击MySQL Community(GPL)Downloads 3.要下载MySQL的jar包的选择Connector/J 4.进入后,根据自己的需求选择相应的版本 5.下载完成后,进行解压…

jenkins服务启动-排错

服务状态为active (exited) 且进程不在 查看/etc/rc.d/init.d/jenkins配置 获取配置参数 [rootfy-jenkins-prod jenkins]# cat /etc/rc.d/init.d/jenkins | grep -v #JENKINS_WAR"/usr/lib/jenkins/jenkins.war" test -r "$JENKINS_WAR" || { echo "…

Redis7.0八种数据结构底层原理

导读 本文介绍redis应用数据结构与物理存储结构,共八种应用数据结构和 一. 内部数据结构 1. sds sds是redis自己设计的字符串结构有以下特点: jemalloc内存管理预分配冗余空间二进制安全(c原生使用\0作为结尾标识,所以无法直接存储\0)动态计数类型(根据字符串长度动态选择…

细说STM32F407单片机RTC的备份寄存器原理及使用方法

目录 一、备份寄存器的功能 二、示例功能 三、项目设置 1、晶振、DEBUG、CodeGenerator、USART6 2、RTC 3、NVIC 4、GPIO 及KEYLED 四、软件设计 1、main.h 2、main.c 3、rtc.c 4、keyled.c、keyled.h 五、运行调试 本实例旨在介绍备份寄存器的作用。本实例继续使…

spring 学习 (注解)

目录 前言 常用的注解 须知 1 Conponent注解 demo(案例) 2 ControllerServiceRepository demo(案例) 3 ScopeLazyPostConstructPreDestroy demo(案例) 4 ValueAutowiredQualifierResource demo(案例) 5 Co…

【Linux】多线程 -> 从线程概念到线程控制

线程概念 在一个程序里的一个执行路线就叫做线程(thread)。更准确的定义是:线程是“一个进程内部的控制序列”。一切进程至少都有一个执行线程。线程在进程内部运行,本质是在进程地址空间内运行。在Linux系统中,在CPU眼…

mapbox 从入门到精通 - 目录

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀总目录1.1 ☘️ mapbox基础1.2 ☘️…

深度学习在半导体领域的创新点研究

摘要:本论文聚焦于深度学习在半导体领域的创新应用,全面剖析其为半导体产业带来的变革与机遇。通过深入探究深度学习在半导体设计、制造、测试及质量管控等多方面的创新实践,揭示其对提升半导体性能、降低成本及增强产业竞争力的关键作用。同…