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

news2025/6/6 15:58:00

目录

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.coloradmin.cn/o/2399123.html

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

相关文章

【中国·广州】第三届信号处理与智能计算国际学术会议 (SPIC2025) 即将开启

第三届信号处理与智能计算国际学术会议 (SPIC2025) 即将开启 在信息技术飞速发展的当下,信号处理与智能计算作为前沿科技领域,正深刻改变着我们的生活与产业格局。为汇聚全球顶尖智慧,推动该领域进一步突破,第三届信号处理与智能…

Android12 Launcher3显示所有应用列表

Android12 Launcher3显示所有应用列表 1.前言: 最近在Android12Rom定制时需要显示所有桌面应用的图标,并且不能去掉抽屉,在手机上面抽屉和所有应该列表是两种不同模式,用户基可以自行选择,但是在自定义的launcher中这…

智能快递地址解析接口如何用PHP调用?

一、什么是智能快递地址解析接口 随着互联网技术的普及和电子商务的迅猛发展,网购已成为现代人日常生活的重要组成部分。然而,在这个便捷的背后,一个看似不起眼却影响深远的问题正悄然浮现——用户填写的快递地址格式混乱、信息不全甚至错漏…

华为OD机试真题——模拟消息队列(2025B卷:100分)Java/python/JavaScript/C++/C语言/GO六种最佳实现

2025 B卷 100分 题型 本文涵盖详细的问题分析、解题思路、代码实现、代码详解、测试用例以及综合分析; 并提供Java、python、JavaScript、C++、C语言、GO六种语言的最佳实现方式! 2025华为OD真题目录+全流程解析/备考攻略/经验分享 华为OD机试真题《模拟消息队列》: 目录 题…

基于VU37P的高性能采集板卡

基于VU37P的高性能采集板卡是一款最大可提供20路ADC接收通道的高性能采集板卡。每路A/D通道支持1GS/s的采样率,分辨率为14bit,模拟输入带宽可达500MHz,交流耦合,输入阻抗50欧姆。 产品简介 可提供20路ADC接收通道的高性能采集板…

2025-05-31 Python深度学习10——模型训练流程

文章目录 1 数据准备1.1 下载与预处理1.2 数据加载 2 模型构建2.1 自定义 CNN 模型2.2 GPU加速 3 训练配置3.1 损失函数3.2 优化器3.3 训练参数 4 训练循环4.1 训练模式 (model.train())4.2 评估模式 (model.eval()) 5 模型验证 本文环境: Pycharm 2025.1Python 3.1…

K8S StatefulSet 快速开始

其实这篇文章的梗概已经写了很久了,中间我小孩出生了,从此人间多了一份牵挂。抽出一些时间去办理新生儿相关手续。初为人父确实艰辛,就像学技术一样,都需要有极大的耐心,付出很多的时间。 一、引子 1.1、独立的存储 …

nav2笔记-250603

合作背景: AMD与Open Navigation在过去几个月里进行了合作,旨在向ROS 2社区展示AMD强大的Ryzen AI、Embedded和Kria能力。 演示内容: 帖子提到,他们已经开始展示如何使用Ryzen AI为自主机器人产品提供动力,在各种现实世…

指纹识别+精准化POC攻击

开发目的 解决漏洞扫描器的痛点 第一就是扫描量太大,对一个站点扫描了大量的无用 POC,浪费时间 指纹识别后还需要根据对应的指纹去进行 payload 扫描,非常的麻烦 开发思路 我们的思路分为大体分为指纹POC扫描 所以思路大概从这几个方面…

mac环境下的python、pycharm和pip安装使用

Python安装 Mac环境下的python安装 下载地址:https://www.jetbrains.com.cn/pycharm/ 一直点击下一步即可完成 在应用程序中会多了两个图标 IDLE 和 Python launcher IDLE支持在窗口中直接敲python命令并立即执行,双击即可打开 Python launcher双击打…

BUUCTF[极客大挑战 2019]Havefun 1题解

BUUCTF[极客大挑战 2019]Havefun 1题解 题目分析解题理解代码逻辑:构造Payload: 总结 题目分析 生成靶机,进入网址: 首页几乎没有任何信息,公式化F12打开源码,发现一段被注释的源码: 下面我们…

Tomcat优化篇

目录 一、Tomcat自身配置 1.Tomcat管理页面 2. 禁用AJP服务 3.Executor优化 4.三种运行模式 5.web.xml 6.Host标签 7.Context标签 8.启动速度优化 9.其他方面 二、JMeter测试 笔者推荐 一、Tomcat自身配置 1.Tomcat管理页面 我们可以打开Tomcat的管理页面&#xff…

Temporal Fusion Transformer(TFT)扩散模型时间序列预测模型

1. TFT 简介 Temporal Fusion Transformer(TFT)模型是一种专为时间序列预测设计的高级深度学习模型。它结合了神经网络的多种机制处理时间序列数据中的复杂关系。TFT 由 Lim et al. 于 2019年提出,旨在处理时间序列中的不确定性和多尺度的依…

【LangServe部署流程】5 分钟部署你的 AI 服务

目录 一、LangServe简介 二、环境准备 1. 安装必要依赖 2. 编写一个 LangChain 可运行链(Runnable) 3. 启动 LangServe 服务 4. 启动服务 5. 使用 API 进行调用 三、可选:访问交互式 Swagger 文档 四、基于 LangServe 的 RAG 应用部…

攻防世界-unseping

进入环境 在获得的场景中发现PHP代码并进行分析 编写PHP编码 得到 Tzo0OiJlYXNlIjoyOntzOjEyOiIAZWFzZQBtZXRob2QiO3M6NDoicGluZyI7czoxMDoiAGVhc2UAYXJncyI7YToxOntpOjA7czozOiJwd2QiO319 将其传入 想执行ls,但是发现被过滤掉了 使用环境变量进行绕过 $a new…

[yolov11改进系列]基于yolov11使用FasterNet替换backbone用于轻量化网络的python源码+训练源码

【FasterNet介绍】 为了设计快速神经网络,许多工作都集中在减少浮点运算的数量(FLOPs)上。 然而,我们观察到FLOPs的减少并不一定会导致延迟的类似程度的减少。 这主要源于低效率的每秒浮点运算(FLOPS)。 为了实现更快的网络&#…

一周学会Pandas2之Python数据处理与分析-Pandas2数据绘图与可视化

锋哥原创的Pandas2 Python数据处理与分析 视频教程: 2025版 Pandas2 Python数据处理与分析 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili Pandas 集成了 Matplotlib,提供了简单高效的绘图接口,使数据可视化变得直观便捷。本指南将详…

企业级安全实践:SSL/TLS 加密与权限管理(一)

引言 ** 在数字化转型的浪潮中,企业对网络的依赖程度与日俱增,从日常办公到核心业务的开展,都离不开网络的支持。与此同时,网络安全问题也日益严峻,成为企业发展过程中不可忽视的重要挑战。 一旦企业遭遇网络安全事…

2025——》VSCode Windows 最新安装指南/VSCode安装完成后如何验证是否成功?2025最新VSCode安装配置全攻略

1.VSCode Windows 最新安装指南: 以下是 2025 年 Windows 系统下安装 Visual Studio Code(VSCode)的最新指南,结合官方文档与实际操作经验整理而成: 一、下载官方安装包: 1.访问官网: 打开浏览器,进入 VSCode 官方下载页面https://code.visualstudio.com/Download 2…

【MATLAB代码】制导——三点法,二维平面下的例程|运动目标制导,附完整源代码

三点法制导是一种导弹制导策略,主要用于确保导弹能够准确追踪并击中移动目标。该方法通过计算导弹、目标和制导站之间的相对位置关系,实现对目标的有效制导。 本文给出MATLAB下的三点法例程,模拟平面上捕获运动目标的情况订阅专栏后可直接查看源代码,粘贴到MATLAB空脚本中即…