搞不懂去中心化、主从架构和 HA?1 分钟理清关系,再也不怕被问架构设计


                                                                                                                                                <h2>背景</h2> 

最近在了解大数据领域的调度平台 Apache DolphinScheduler,发现它是分布式,但去中心化的,跟之前的Master Slave和HA都不太一样。去中心化是什么意思呢?这种架构方式有什么特别之处和优势?本文将进行详细的解释说明。

大数据领域常见架构方式

要理解去中心化设计、Master-Slave(主从)架构与HA(高可用性) 三者的联系与区别,需先明确各自的核心定义,再从”架构目标””节点关系””可用性实现逻辑”三个维度拆解关联,最终通过对比凸显差异。

一、核心概念定义

首先厘清三者的本质,这是理解关系的基础:

二、三者的核心联系

三者并非”互斥关系”,而是常以”组合形式”实现架构目标,核心联系体现在**”HA是共同追求,Master-Slave和去中心化是实现HA的两种不同路径”**:

  1. Master-Slave 与 HA:”中心化架构下的HA实现” 纯Master-Slave架构本身不具备HA能力(若Master故障,整个系统会”脑死亡”),需通过”HA增强方案”弥补缺陷,常见组合是 “Master-Slave + 主从切换”:
  • 原理:部署”故障检测机制”(如Keepalived、ZooKeeper),实时监控Master状态;
  • 当Master故障时,系统自动从Slave中选举1个”新Master”(如通过”心跳检测”确认故障后,触发Failover),确保服务不中断;
  • 典型场景:MySQL主从复制(Master写、Slave读)+ MHA(MySQL High Availability)工具,实现数据库的HA;Kubernetes的”主节点高可用”(多Master节点通过etcd选举,本质是Master集群化的HA优化)。
  1. 去中心化设计与 HA:”天生为HA而生的架构” 去中心化的核心特性(节点平等、无单点依赖)直接契合HA的目标,无需额外”补丁式”方案:
  • 数据层面:每个节点都存储完整数据副本(如比特币区块链),单个节点故障不影响数据完整性;
  • 服务层面:请求可路由到任意正常节点(如P2P文件共享网络),无”中枢节点故障导致整体瘫痪”的风险;
  • 决策层面:通过共识机制(如Raft)确保节点间数据一致,避免”脑裂”(如分布式数据库TiDB的去中心化架构)。
  1. 三者的底层关联:”可用性目标驱动架构选择”

无论是Master-Slave还是去中心化,最终都可能服务于HA目标——HA是”what”(要实现的目标),Master-Slave和去中心化是”how”(实现目标的两种架构路径):

  • 若业务追求”简单部署、低延迟(如读写分离)”,可选择”Master-Slave + HA方案”;
  • 若业务追求”极致容错、抗攻击(如金融、区块链)”,可选择”去中心化设计”(天生HA)。

三、三者的核心区别

从”节点关系””故障影响””适用场景”三个维度,可清晰区分三者的差异:

总结:一句话厘清关系

  • Master-Slave:是”中心化分工架构”,需搭配HA方案才能避免单点故障;
  • 去中心化设计:是”无中心平等架构”,天生具备HA能力,无需额外补救;
  • HA:是”保障服务不中断的目标”,可通过Master-Slave或去中心化两种架构实现,是前两者的”共同追求之一”。

DolphinScheduler去中心化架构

核心设计理念

Apache DolphinScheduler的去中心化设计体现在:

  • 无中心节点:MasterServer和WorkerServer都采用分布式无中心设计,没有传统的主从角色区分 design.md:27-29
  • ZooKeeper注册机制:所有节点向ZooKeeper注册临时节点,通过监听ZooKeeper节点变化进行容错处理 design.md:28-29
  • 动态选举机制:使用ZooKeeper分布式锁选举Master或Worker作为”管理者”来执行任务

任务接收与分配

在 Apache DolphinScheduler 的去中心化架构中,不存在单一的控制中心。Master 节点集群共同承担任务接收与分配职责。当外部提交任务请求时,任何一个 Master 节点都可能接收到该请求。每个 Master 节点会基于自身维护的系统资源信息(如 CPU、内存、网络负载等)以及预设的调度算法,对任务进行评估与分配。

这些 Master 节点之间通过心跳机制保持紧密通信,实时同步各自的状态和任务处理情况。例如,当某个 Master 节点负载过高时,它会将部分任务转移给负载相对较低的其他 Master 节点。这种动态的任务分配方式确保了整个集群资源的均衡利用,避免了单点负载过重的问题。

任务执行与协调

Worker 节点负责具体的任务执行。Worker 节点启动后,会向 Master 节点集群注册自身信息,包括其可提供的资源和执行能力等。Master 节点在分配任务时,会考虑 Worker 节点的资源状况,将合适的任务分配给对应的 Worker 节点。

Worker 节点从 Master 节点接收任务后,独立执行任务。在执行过程中,Worker 节点会实时向 Master 节点反馈任务执行状态,如任务开始、任务进行中、任务完成或任务失败等信息。如果任务执行过程中出现异常,Worker 节点会根据预设的策略进行处理,如重试任务、向管理员发送告警等。同时,Master 节点会根据各个 Worker 节点反馈的任务状态,对整个任务调度流程进行协调和优化,确保所有任务都能高效、稳定地执行。

可以看到,与 Master – Slave、HA 架构相比,Apache DolphinScheduler 的去中心化架构优势显著。Master – Slave 架构中,Master 节点是单点故障隐患,一旦宕机,系统调度与管理易瘫痪。HA 架构虽通过备用 Master 节点解决单点故障,但主备切换会致短暂服务中断,且备用节点平时闲置浪费资源。而 DolphinScheduler 去中心化架构里,各节点地位平等、相互协作,无单点故障风险。部分节点故障时,其余节点能无缝接替工作,确保业务持续稳定运行。同时,去中心化架构更易扩展,随业务增长,简单添加节点即可提升处理能力,无需复杂调整,极大提高了系统的灵活性与适应性,降低运维成本。

                                                                                </div>



Source link

未经允许不得转载:紫竹林-程序员中文网 » 搞不懂去中心化、主从架构和 HA?1 分钟理清关系,再也不怕被问架构设计

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
关于我们 免责申明 意见反馈 隐私政策
程序员中文网:公益在线网站,帮助学习者快速成长!
关注微信 技术交流
推荐文章
每天精选资源文章推送
推荐文章
随时随地碎片化学习
推荐文章
发现有趣的