当前位置: 首页 > news >正文

我与DeepSeek读《大型网站技术架构》(11)- 海量分布式存储系统Doris的高可用架构设计分析

文章目录

  • 设计目标与高可用定义
  • 分布式存储系统高可用架构
    • 核心设计原则:冗余与失效转移
    • 架构组成部分
      • 应用服务器层
      • 数据存储服务器集群
      • 管理中心服务器
    • 数据读写流程
  • 应对不同故障的高可用方案
    • 瞬时故障处理流程
    • 临时故障处理流程
      • 故障期间读写
      • 恢复期间数据迁移
    • 永久故障处理流程
      • 故障期间读写
      • 恢复期间数据重建

设计目标与高可用定义

Doris是海量分布式KV存储系统,目标是为中等规模集群提供高可用(HA)可伸缩存储能力。其高可用包含两层含义:

  • 服务高可用:在宕机、扩容、维护等场景下仍可读写。
  • 数据高可靠:数据持久存储,不丢失。

分布式存储系统高可用架构

核心设计原则:冗余与失效转移

  • 数据冗余存储
    每个数据保存多份副本(默认至少两份),分布于不同的物理服务器或存储序列中,避免单点故障。
  • 灵活失效转移(Failover)
    通过分布式集群的健康监测与动态路由,在部分节点故障时自动切换至可用节点,保证服务连续性。

架构组成部分

应用服务器层

  • 管理中心服务器 获取存储节点元数据,根据路由算法发起数据操作请求。
  • 支持多路径并发写入,随机选择副本读取,降低单个存储节点压力。

数据存储服务器集群

  • 副本分布策略
    数据按可用性级别分序列存储(序列指逻辑子集群),每个序列独立承载部分副本。
  • 去中心化设计
    节点间不直接通信,各节点独立存储数据,仅依赖管理中心实现元数据同步。

管理中心服务器

  • 管理集群节点信息,通过 主-主热备模式 监控存储节点健康状态。
  • 负责故障检测、扩容控制及向应用服务器提供集群配置信息。

数据读写流程

  • 写入:根据路由算法并发写入多个序列的目标服务器。
  • 读取:随机选择序列,按路由计算单节点访问,减少开销。
应用服务器 (客户端) 管理中心服务器 (主备集群) 数据存储服务器集群 存储集群_序列A 存储集群_序列B 存储集群_序列n 存储集群_序列X **写流程** 启动时获取存储集群信息 返回序列列表/路由规则 根据路由算法选择服务器写入数据 写入同一数据的另一个副本 (最多按N副本配置执行) loop [多副本并发写入] 数据持久化至多个序列的节点[^1] **读流程** 获取当前有效存储集群信息(仅在集群变更时) 随机选择一个序列 根据相同路由算法计算目标节点 返回指定数据 应用服务器 (客户端) 管理中心服务器 (主备集群) 数据存储服务器集群 存储集群_序列A 存储集群_序列B 存储集群_序列n 存储集群_序列X

应对不同故障的高可用方案

瞬时故障处理流程

特征:网络抖动/短暂阻塞(秒级恢复)

应用服务器 存储节点A 存储节点B 管理中心 读/写请求 请求失败 **立即重试(3~5次)** 成功响应 发起故障仲裁 节点降级为临时故障 读写切至副本节点 alt [瞬时失败] [多次重试仍失败] 应用服务器 存储节点A 存储节点B 管理中心

临时故障处理流程

特征:人工干预修复(故障持续分钟/小时)

故障期间读写

应用服务器 存储节点A 临时存储 存储节点B 写请求(失败) 写入副本(临时区) 写入其他正常副本 读请求 故障期间数据流向临时存储,读取仅访问存活节点 应用服务器 存储节点A 临时存储 存储节点B

恢复期间数据迁移

临时存储 存储节点A(恢复后) 管理中心 存储节点A 重新注册状态 触发迁移任务 写入临时区数据 迁移完成通知 临时存储 存储节点A(恢复后) 管理中心 存储节点A

永久故障处理流程

特征:硬盘损坏导致数据完全丢失

故障期间读写

应用服务器 备份节点 存储节点B 存储节点A 存储节点B/备份节点 写请求(失败超时) 激活备用节点,分配新ID 同步写入存活副本 写入数据 读请求(随机选择) 应用服务器 备份节点 存储节点B 存储节点A 存储节点B/备份节点

恢复期间数据重建

备份节点 存储节点B 管理中心 应用服务器 增量数据同步(全量复制) 完成重建声明 更新集群路由表 备份节点 存储节点B 管理中心 应用服务器

相关文章:

  • ima 知识库,重新定义你的「成长加速器」
  • Github 2025-03-11 Python开源项目日报Top10
  • Bash和Zsh在处理大文件时差异
  • 设计模式C++
  • ArcGIS水文水资源水环境应用实战:从入门到精通!ArcGIS水文分析及流域特征提取;湖泊水库水环境监测及评价;河道水污染预测与水环境容量计算等
  • 《黑客攻防从入门到精通:工具篇》全15章万字深度总结——从工具解析到实战攻防,构建完整网络安全知识体系
  • Java 8 Stream 面试题
  • win32汇编环境,对 WM_MOUSEMOVE 消息的理解
  • 运维新手入门——线缆的使用(Beginner‘s Guide to Operations and Maintenance - Cable Usage)
  • 七大常用智能家居协议对比
  • Spring Boot + MySQL + MyBatis:企业级应用开发实战
  • 【 现代后端架构演进:微服务设计与云原生】
  • 012-Benchmark
  • csdn码字员的第2*2^10天
  • Android Retrofit 框架配置与构建模块深入源码分析(六)
  • 微软程序控制机制WDAC
  • 自动化的多线程实现
  • Spring中的对象创建与生命周期管理
  • Gateway:网关路由与登录鉴权
  • 手机端安装包签名原理
  • 新能源汽车,告别混乱创新
  • 专访|导演刘江:给谍战题材注入现实主义的魂
  • 演员黄晓明、金世佳进入上海戏剧学院2025年博士研究生复试名单
  • 盖茨说对中国技术封锁起到反作用
  • 季后赛主场优势消失之谜,这事竟然要赖库里
  • 全球医药股普跌,A股创新药板块下挫