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

去中心化是什么意思呢?这种架构方式有什么特别之处和优势?



点击蓝字 关注我们



作者 | shengjk1
编辑 | 小海豚运营团队

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

大数据领域

常见架构方式

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

一、核心概念定义

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

术语
核心定义
核心目标
Master-Slave(主从)
一种中心化架构,由1个“主节点(Master)”和多个“从节点(Slave)”组成:
- Master:负责核心操作(如写数据、决策),是架构的“中枢”;
- Slave:仅同步Master数据、执行辅助操作(如读数据),无独立决策权。
1. 分工协作(如读写分离,提升性能);
2. 数据备份(Slave作为Master的副本,避免数据丢失)。
HA(High Availability,高可用性)
一种架构设计指标/方案,目标是让系统在遇到硬件故障、软件崩溃等异常时,仍能“持续提供服务”,通常用“可用性百分比”衡量(如99.99%意味着年 downtime 仅52分钟)。
最大限度减少“服务不可用时间”,保障业务连续性。
去中心化设计
一种无中心节点的架构,所有节点(或“对等节点,Peer”)地位平等:
- 无固定“中枢”,每个节点均可独立处理请求、存储数据;
- 节点间通过共识机制(如Paxos、区块链的PoW)同步数据、达成决策一致。
1. 避免“单点故障”(无中心节点可被攻击或故障);
2. 提升架构弹性(节点增减不影响整体稳定性)。

二、三者的核心联系

三者并非“互斥关系”,而是常以“组合形式”实现架构目标,核心联系体现在**“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优化)。

2. 去中心化设计与 HA:“天生为HA而生的架构”

去中心化的核心特性(节点平等、无单点依赖)直接契合HA的目标,无需额外“补丁式”方案:

  • 数据层面:每个节点都存储完整数据副本(如比特币区块链),单个节点故障不影响数据完整性;
  • 服务层面:请求可路由到任意正常节点(如P2P文件共享网络),无“中枢节点故障导致整体瘫痪”的风险;
  • 决策层面:通过共识机制(如Raft)确保节点间数据一致,避免“脑裂”(如分布式数据库TiDB的去中心化架构)。

3. 三者的底层关联:“可用性目标驱动架构选择”

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

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

三、三者的核心区别

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

对比维度
Master-Slave(主从)
去中心化设计
HA(高可用性)
架构本质
中心化架构(有明确中枢)
无中心架构(节点平等)
可用性指标/方案(非独立架构)
节点关系
主节点主导,从节点被动同步(主从不平等)
所有节点对等,主动参与共识(无主从)
不定义节点关系,仅要求“故障时服务连续”
单点故障风险
高(Master是单点,故障即中断服务,需额外HA方案补救)
低(无单点,单个/多个节点故障不影响整体)
无(HA的目标就是消除单点故障风险)
数据一致性保障
依赖Master向Slave同步(可能存在“主从延迟”,弱一致性)
依赖节点间共识机制(如强一致性的Raft,或最终一致性的PoW)
不直接定义一致性,需结合架构实现(如Master-Slave HA可能弱一致,去中心化HA可能强一致)
部署与维护复杂度
低(架构简单,易部署;但需维护主从切换逻辑)
高(需处理共识机制、节点同步,复杂度高)
取决于底层架构(Master-Slave HA较简单,去中心化HA较复杂)
典型适用场景
读写分离(如MySQL)、日志同步(如ELK的Logstash-Master)
区块链(如比特币)、P2P网络(如BitTorrent)、分布式数据库(如TiDB)
所有对“服务连续性”有要求的场景(如电商交易系统、金融核心系统)


总结:一句话

厘清关系


  • 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 去中心化架构里,各节点地位平等、相互协作,无单点故障风险。部分节点故障时,其余节点能无缝接替工作,确保业务持续稳定运行。同时,去中心化架构更易扩展,随业务增长,简单添加节点即可提升处理能力,无需复杂调整,极大提高了系统的灵活性与适应性,降低运维成本。





用户案例



天翼云Zoom网易邮箱 
每日互动 惠生工程  作业帮 
博世智驾 蔚来汽车 长城汽车
集度长安汽车思科网讯
食行生鲜联通医疗联想
新网银行唯品富邦消费金融 
自如有赞伊利当贝大数据
珍岛集团传智教育Bigo
YY直播  拈花云科太美医疗
Cisco Webex兴业证券




迁移实战



Azkaban   Ooize(当贝迁移案例)
airflow (有赞迁移案例)
Air2phin(迁移工具)
Airflow迁移实践



发版消息




Apache DolphinScheduler 3.2.2版本正式发布!
Apache DolphinScheduler 3.2.1 版本发布:增强功能与安全性的全面升级
Apache DolphinScheduler 3.3.0 Alpha发布,功能增强与性能优化大升级!




加入社区



关注社区的方式有很多:

  • GitHub: https://github.com/apache/dolphinscheduler
  • 官网:https://dolphinscheduler.apache.org/en-us
  • 订阅开发者邮件:dev@dolphinscheduler@apache.org(向邮箱发送任意内容,收到邮件后回复同意订阅即可)
  • X.com:@DolphinSchedule
  • YouTube:https://www.youtube.com/@apachedolphinscheduler
  • Slack:https://join.slack.com/t/asf-dolphinscheduler/shared_invite/zt-1cmrxsio1-nJHxRJa44jfkrNL_Nsy9Qg

同样地,参与Apache DolphinScheduler 有非常多的参与贡献的方式,主要分为代码方式和非代码方式两种。

非代码方式包括:

完善文档、翻译文档;翻译技术性、实践性文章;投稿实践性、原理性文章;成为布道师;社区管理、答疑;会议分享;测试反馈;用户反馈等。

‍代码方式包括:

查找Bug;编写修复代码;开发新功能;提交代码贡献;参与代码审查等。

贡献第一个PR(文档、代码) 我们也希望是简单的,第一个PR用于熟悉提交的流程和社区协作以及感受社区的友好度。

社区汇总了以下适合新手的问题列表https://github.com/apache/dolphinscheduler/pulls?q=is%3Apr+is%3Aopen+label%3A%22first+time+contributor%22

优先级问题列表https://github.com/apache/dolphinscheduler/pulls?q=is%3Apr+is%3Aopen+label%3Apriority%3Ahigh

如何参与贡献链接https://dolphinscheduler.apache.org/zh-cn/docs/3.2.2/%E8%B4%A1%E7%8C%AE%E6%8C%87%E5%8D%97_menu/%E5%A6%82%E4%BD%95%E5%8F%82%E4%B8%8E_menu

如果你❤️小海豚,就来为我点亮Star吧!

https://github.com/apache/dolphinscheduler


你的好友秀秀子拍了拍你

并请你帮她点一下“分享”