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

目录

[1 Replica基础概念](#1 Replica基础概念)

[1.1 什么是Replica](#1.1 什么是Replica)

[1.2 Doris中的副本类型](#1.2 Doris中的副本类型)

[2 Doris副本架构设计](#2 Doris副本架构设计)

[2.1 副本分布机制](#2.1 副本分布机制)

[2.2 副本一致性模型](#2.2 副本一致性模型)

[3 副本生命周期管理](#3 副本生命周期管理)

[3.1 副本创建流程](#3.1 副本创建流程)

[3.2 副本恢复机制](#3.2 副本恢复机制)

[4 副本读写流程详解](#4 副本读写流程详解)

[4.1 写入流程与副本同步](#4.1 写入流程与副本同步)

[4.2 查询流程与副本选择](#4.2 查询流程与副本选择)

[5 副本均衡与调度](#5 副本均衡与调度)

[5.1 副本均衡策略](#5.1 副本均衡策略)

[5.2 调度器工作原理](#5.2 调度器工作原理)

[6 高级副本管理](#6 高级副本管理)

[6.1 副本放置策略(Placement Policy)](#6.1 副本放置策略(Placement Policy))

[6.2 动态调整副本数](#6.2 动态调整副本数)

[7 总结](#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集群调优的关键环节。

相关推荐
XMYX-01 小时前
解决 Apache/WAF SSL 证书链不完整导致的 PKIX path building failed 问题
网络协议·apache·ssl
IT·陈寒2 小时前
怎么这么多 StringUtils —— Apache、Spring、Hutool 全面对比
java·spring·apache
cg.family3 小时前
Doirs Routine Load
doris·routine load
喂完待续1 天前
【Big Data】云原生与AI时代的存储基石 Apache Ozone 的技术演进路径
云原生·架构·apache·big data·序列晋升
todoitbo2 天前
时序数据库选型指南:Apache IoTDB快速部署与实战应用
apache·时序数据库·iotdb
IDOlaoluo2 天前
apache-jmeter-5.1.1安装部署与使用教程(小白一看就会)
jmeter·apache
倔强的石头1062 天前
时序数据库选型指南:为何Apache IoTDB成为工业物联网首选
apache·时序数据库·iotdb
wei_shuo2 天前
物联网时序数据存储方案:Apache IoTDB 集群部署全流程 + TimechoDB 优势解读
物联网·apache·iotdb
sanggou3 天前
Apache Doris:重塑湖仓一体架构的高效计算引擎
架构·数据分析·apache
C-20023 天前
Apache 的安装及基本使用
apache