【Doris基础】Doris中的Replica详解:Replica原理、架构

article/2025/6/17 15:10:56

目录

1 Replica基础概念

1.1 什么是Replica

1.2 Doris中的副本类型

2 Doris副本架构设计

2.1 副本分布机制

2.2 副本一致性模型

3 副本生命周期管理

3.1 副本创建流程

3.2 副本恢复机制

4 副本读写流程详解

4.1 写入流程与副本同步

4.2 查询流程与副本选择

5 副本均衡与调度

5.1 副本均衡策略

5.2 调度器工作原理

6 高级副本管理

6.1 副本放置策略(Placement Policy)

6.2 动态调整副本数

7 总结


1 Replica基础概念

1.1 什么是Replica

在分布式数据库系统中,Replica(副本)是指同一份数据在不同节点上的多个拷贝。Apache Doris作为一个MPP架构的分析型数据库,通过多副本机制来实现数据的高可用和负载均衡。
副本的核心价值
  • 数据可靠性:防止单点故障导致数据丢失
  • 服务可用性:即使部分节点失效,系统仍可提供服务
  • 查询性能:多个副本可以分担查询负载
  • 弹性扩展:通过增加副本来提升系统吞吐量

1.2 Doris中的副本类型

Doris支持两种类型的副本:
普通副本(Normal Replica)
  • 完整存储数据分片(Tablet)的所有数据
  • 参与数据导入和查询
  • 可以投票选举Leader
影子副本(Shadow Replica)
  • 仅用于紧急情况下的故障恢复
  • 不参与日常的数据服务
  • 不参与Leader选举

2 Doris副本架构设计

2.1 副本分布机制

Doris采用分片(Tablet)作为数据分布的基本单位,每个Tablet会有多个副本分布在不同的节点上。副本分布遵循以下原则:
  • 节点级容错:同一Tablet的不同副本必须分布在不同的BE节点上
  • 机架感知(如果配置):优先跨机架分布副本
  • 存储介质平衡:考虑不同存储介质的均衡使用

2.2 副本一致性模型

Doris采用多副本强一致性模型,基于Raft协议实现。关键特性包括:
  • Leader-Follower模型:每个Tablet的多个副本中有一个Leader,其余为Follower
  • 写入路径:所有写入必须通过Leader,成功后同步到多数Follower才算成功
  • 读取路径:默认从Leader读取,也可配置为从Follower读取(最终一致性)
Raft协议在Doris中的实现特点
  • 优化了批量提交机制,提高吞吐量
  • 支持配置异步提交模式(牺牲部分一致性换取性能)
  • 心跳和选举超时时间可配置

3 副本生命周期管理

3.1 副本创建流程

当创建新表或添加分区时,Doris会触发副本创建过程:
  • FE选择目标BE节点并发送创建请求
  • 各BE创建本地Tablet数据目录和元数据
  • FE协调发起Leader选举
  • 新Leader上报FE,完成副本创建

3.2 副本恢复机制

当检测到副本不可用(如BE宕机)时,Doris会自动触发副本恢复:
  • 检测阶段:FE通过心跳检测副本状态
  • 决策阶段:确定需要恢复的Tablet和副本
  • 调度阶段:选择目标BE并触发副本克隆
  • 同步阶段:从健康副本同步数据
  • 生效阶段:新副本加入组,更新元数据
关键参数
  • tablet_checker_interval_ms:副本检查间隔
  • tablet_sched_slot_num_per_path:每个磁盘路径的恢复并发数
  • replica_sync_rpc_timeout_ms:副本同步RPC超时时间

4 副本读写流程详解

4.1 写入流程与副本同步

  • Client发送写入请求到FE
  • FE路由到对应Tablet的Leader BE
  • Leader将数据写入本地WAL(Write Ahead Log)
  • Leader并行发送日志到所有Follower
  • 等待多数副本(包括Leader)持久化成功
  • Leader提交写入,返回客户端成功
写入优化技术
  • 批量提交:积累多个操作一次性提交
  • 流水线:下一批写入不等待上一批提交完成
  • 并行发送:并发向多个Follower发送数据

4.2 查询流程与副本选择

Doris的查询副本选择策略:
策略说明
  • Leader优先:默认策略,总是选择Leader保证强一致性
  • 本地优先:优先选择与计算节点同机的副本
  • 轮询调度:均匀分散查询负载
  • 随机选择:简单无状态的分配方式
  • 可通过prefer_replica参数配置策略:
SET prefer_replica = 'local';  -- 本地优先

5 副本均衡与调度

5.1 副本均衡策略

Doris通过内置的Tablet调度器维持集群均衡:
均衡维度
  • 节点间副本数均衡:确保各BE的副本数量相近
  • 磁盘空间均衡:防止单个磁盘过满
  • 标签均衡:考虑机架、机房等容灾属性
  • 存储介质均衡:平衡SSD和HDD的使用

5.2 调度器工作原理

Doris的副本调度器主要组件:
  • Collector:收集集群Tablet和副本状态
  • Analyzer:分析需要调度的Tablet
  • Scheduler:生成调度任务并执行
  • Checker:检查调度结果
  • 关键配置参数
# 调度器运行间隔
tablet_sched_interval_ms=1000
# 均衡策略
enable_balance=true
balance_load_score_threshold=0.1
# 并发控制
tablet_sched_max_scheduling_tablets=1024
tablet_sched_slot_num_per_path=2

6 高级副本管理

6.1 副本放置策略(Placement Policy)

Doris支持通过SQL定义副本放置规则:
-- 创建具有副本放置策略的资源
CREATE RESOURCE resource_name
PROPERTIES ("replication_num" = "3","tag.location" = "zone1:rack1:be1,zone1:rack2:be2,zone2:rack1:be3"
);-- 应用资源到表
CREATE TABLE db1.table1 (k1 INT,k2 VARCHAR(32)
DISTRIBUTED BY HASH(k1) BUCKETS 32
PROPERTIES ("replication_allocation" = "resource_name"
);
策略优势
  • 实现跨机架、跨机房部署
  • 满足数据本地化要求
  • 符合合规性要求(如数据不出域)

6.2 动态调整副本数

Doris支持在线修改表的副本数:
ALTER TABLE db1.table1 SET ("replication_num" = "3");
执行流程:
  • FE更新元数据中的目标副本数
  • Tablet调度器检测到差异
  • 调度器创建增加/删除副本任务
  • 逐步调整直到满足新副本数要求
注意事项
  • 增加副本会占用更多存储和网络资源
  • 减少副本可能暂时降低可用性
  • 大规模调整建议在低峰期进行

7 总结

Doris的副本管理系统是其高可用和高性能的基石。通过深入理解副本的创建、同步、恢复和均衡机制,管理员可以更好地规划集群部署、优化性能参数,并有效处理各种异常情况。合理的副本配置不仅能保障数据安全,还能显著提升查询性能,是Doris集群调优的关键环节。

http://www.hkcw.cn/article/TcxGUMYWQy.shtml

相关文章

老主板焕新生-技嘉B250M-DS3H开Above 4G(G4560+外置核显DG1)

DG1显卡 Intel DG1显卡是一款基于Xe-LP架构的入门级独立显卡,以下是其优势和特点,以及对于老主板(10代CPU以前)的优势: 优势和特点: 视频编解码能力强:DG1显卡支持多种视频格式的编解码,包括H.…

4.6 linux内核启动分析

1. Linux内核源码目录结构 目录名称作用arch包含了不同架构相关的代码block块设备相关的源代码crypto加密算法相关的源代码drivers包含了系统中设备驱动的源代码firmware一些固件的源代码fs系统支持的文件系统相关的源代码include内核共用的头文件init内核启动的源代码ipc进程…

Oracle中EXISTS NOT EXISTS的使用

目录 1.IN与EXISTS EXISTS用法总结 2.NOT IN与NOT EXISTS 3.not in 中 null的用法 4.EXISTS和IN的区别 (面试常问) 1.IN与EXISTS 示例:在 DEPT 表中找出在 EMP 表中存在的部门编号; 方法一:使用in select DEPTNO from DEPT where D…

Lyra学习笔记 Experience流程梳理

目录 前言1 创建2 加载3 Deactivate4 总结与图示 前言 这篇主要将视角放在Experience的流程,所以不会涉及一些更深的东西 之后ULyraExperienceManagerComponent简称为EMC 1 创建 完事开头难,首先找到了管理Experience的组件,那么它的初始化…

一文读懂Automotive SPICE

一、过程参考模型 以下过程组被组织成三个过程类别:主要生命周期过程(Primary Lifecycle Process)、组织生命周期过程(Organization Lifecycle Processes)和支持生命周期过程(Supporting Lifecycle Process)。 1.1、主要生命周期过程类别 主要生命周期过程类别包含可…

STM32F103_Bootloader程序开发07 - 使用J-Flash将App_crc.bin烧录到App下载缓存区,再校验CRC32,确认固件完整性

导言 本章节做一个实验“校验一遍App缓存区的固件”,看看能不能通过CRC32校验。在OTA升级流程上,当bootloader程序接收完上位机下发的App固件到App下载缓存区后,bootloader程序要对App下载缓存区的固件进行CRC32校验。 校验通过的话&#xf…

智联未来:低空产业与AI新纪元-(上)

1. 被重新定义的三维空间 低空经济是指在1000米以下空域开展的各类经济活动,这个曾被视为"空中盲区"的领域,正在AI技术加持下焕发新生。全球咨询机构预测,到2030年低空经济将创造超2万亿美元市场价值,相当于再造一个日…

[prophet]Importing matplotlib failed. Plotting will not work.

测试环境: prophet1.1.4 matplotlib3.4.3 pillow10.2.0 当import prophet时候会报错 解决方法: pip install pillow9.0.0 pip uninstall matplotlib pip install matplotlib3.4.3

核心机制三:连接管理(三次握手)

核心机制一:确认应答 > 实现可靠传输的核心 接受方给发送方返回"应答报文"(ack) 1)发送方能够感知到对方是否收到 2)如果对方没有收到,发送方采取措施 序号按照字节编排 (连续递增) 确认序号按照收到数据的最后一个字节序号 1 核心机制二:超时重传 > 产生丢包…

三步问题 --- 动态规划

目录 一:题目 二:算法原理 三:代码实现 一:题目 题目链接:面试题 08.01. 三步问题 - 力扣(LeetCode) 二:算法原理 三:代码实现 class Solution { public:int waysT…

Adobe Acrobat 9.1.2 Pro (install)

Adobe Acrobat 9.1.2 Pro (install) PDF编辑工具安装Acrobat 9.1.2 E:\Downloads\Adobe_Acrobat_ProX\Adobe_Acrobat_ProX 1118-1905-0841-9679-7056-1416 先别启动哦!!!! 先别启动哦!!&…

我们通常说理解的软件设计的哲学是什么?

软件设计的哲学指的是一系列指导软件设计决策的根本理念、原则和价值观。它超越了具体的技术、工具或模式,深入到“我们为什么这样设计软件”以及“什么才是好的软件设计”的核心思考层面。 它不是一份具体的操作手册,而更像是一种思维方式和价值取向&a…

表单校验代码和树形结构值传递错误解决

表单校验代码,两种方式校验,自定义的一种校验,与element-ui组件原始的el-form表单的校验不一样,需要传递props和rules过去校验 const nextStep () > {const data taskMsgInstance.value.formDataif(data.upGradeOrg ) {elm…

Yolov8改进 C2f中添加注意力机制Attention 包括SE、CA、CBAM、MHSA等)具体实现代码,如何将这些模块集成到YOLOv8模型中

Yolov8改进 C2f中添加注意力机制代码 包括SE、CA、CBAM、MHSA等)的具体实现代码,以及如何将这些模块集成到YOLOv8模型中的示例。 文章目录 1. **Channel Attention (CA)**2. **Spatial Attention (SA)**3. **CBAM (Convolutional Block Attention Module…

Python:操作Excel公式

💻Python 操作 Excel 公式实战教程(含 openpyxl、xlwings 全解析 + 常用公式大全) 在日常的数据分析与自动化报表场景中,借助 Python 操作 Excel 文件能极大提高效率。尤其是在批量生成、写入与读取 Excel 公式方面,Python 提供了多个强大库支持。 📚一、主流库对比:选…

tomcat服务器以及接受请求参数的方式

1.javaee:意为java企业版,指java企业级开发的规范总和,包含13项技术规范 2.事实上服务器和客户端进行交互的过程中,有一个前端控制器在中间运作,这个控制器为DispatcherServlet,它负责将客户端请求的信息包…

AI文档排版工具永久免费

🚀 快速开始 1. 启动程序 双击 AI文档排版工具.exe 启动程序 下载地址:https://pan.quark.cn/s/1ce59c96040f 2. 首次配置 首次使用需要配置API信息点击"⚙️ API配置"按钮输入API地址和密钥点击"测试连接"验证 3. 开始排版 …

C语言 — 自定义类型(结构体,联合体,枚举)

目录 1.结构体1.1 结构体类型的声明1.2 结构体变量的创建和初始化1.3 结构体成员的使用1.4 结构体的大小1.4.1 计算以下结构体的大小1.4.2 计算以下结构体的大小1.4.3 结构体中嵌套结构体的大小计算 1.5 位段1.5.1 使用位段计算结构体大小1.5.2 位段的缺陷 2.联合体2.1 联合体的…

【CATIA的二次开发16】根对象Application涉及撤销和重做事务管理相关方法

在CATIA VBA开发中,对根对象Application涉及撤销和重做事务管理相关方法进行详细总结,并且用不同形式展示出来。供大家后续开发全面了解Application对象的方法,以便在开发过程中快速查找和使用: 一、Application常用方法分类 1、基础控制与进程管理(3个方法) 方法名功能…

基于 Intel CNVi 接口 WIFI 产品介绍

CNVi是什么?CNVi(Connectivity Integration),CNVi 即英特尔集成连接 I/O 接口,是英特尔专为 Wi-Fi 和蓝牙无线设备设计的一种连接架构。 架构原理: 在 CNVi 架构下,网络适配器中通常较大且昂贵…