4. 调度器架构设计

隐私计算任务编排的调度器,本质上要回答三个问题:谁来决定任务在哪些节点上执行、谁掌握全局状态、以及当某个节点失效时由谁接管。围绕这三个问题,业界形成了中心化与去中心化两大方向,并进一步落地为主从模式、对等模式和混合模式。理解它们的差异,不能停留在“有没有中心节点”这一层,而要落到状态存储位置、调度决策路径、故障切换方式和一致性代价上。

中心化调度:单一决策点

中心化调度由一个调度器(Scheduler)统一维护任务队列、节点资源和任务状态。所有参与方(数据提供方、计算方)向调度器注册能力,调度器按策略把任务分派下去。它的优点是全局视图清晰、策略容易实现、任务依赖和优先级可以集中管理;缺点是调度器成为单点,且在多参与方互不信任的场景下,谁来做这个中心往往难以达成一致。

中心化调度最典型的落地形态是主从模式(Master-Slave)。主节点负责接收任务、拆分DAG、分配子任务、收集心跳;从节点只负责执行和上报。以联邦学习的一轮训练为例,主节点在每轮开始时把当前全局模型版本号、参与方列表、本轮随机种子下发给从节点,从节点完成本地训练后回传梯度或模型更新,主节点聚合后再进入下一轮。这里主节点掌握的是“轮次状态”,从节点掌握的是“本地数据与本地计算状态”。

主从模式的关键工程参数包括:心跳间隔(如3秒)、失联判定阈值(如连续3次心跳丢失)、任务超时时间(如单轮训练300秒)、重试次数(如2次)。当从节点失联时,主节点需要决定是重派任务还是将该节点从本轮剔除。若采用剔除策略,聚合权重需要重新归一化,否则会引入偏差。这是主从模式中容易被忽视的一致性细节。

去中心化调度:对等协商

去中心化调度没有全局唯一的决策者,各节点通过共识或协商决定任务分配。最典型的是对等模式(Peer-to-Peer)。每个节点既是任务发起者也是执行者,任务通过 gossip、DHT 或共识协议传播。对等模式的优势是抗单点故障、参与方地位平等,适合多方对等协作且互不信任的场景;代价是全局状态收敛慢、任务冲突需要额外解决、调度策略难以做到全局最优。

对等模式中,任务分配通常依赖某种一致性机制。例如使用 Raft 或 PBFT 维护一份任务分配日志,或者使用 CRDT 让各节点的任务状态最终收敛。实际工程里,对等模式很少用于强实时的任务分派,更多用于任务发现、节点能力广播和结果校验。一个常见做法是:任务发起方广播任务描述,有意愿的节点返回报价(算力、数据可用性、信誉分),发起方按规则选择若干节点并直接建立点对点连接执行。此时“调度”分散在每次协商中,而不是集中在一个调度器里。

混合模式:分层与分区

纯中心化和纯对等都有明显短板,实际系统多采用混合模式。混合模式通常按“域”分层:每个参与方内部有一个本地调度器(中心化),负责本域资源管理和子任务执行;跨域之间由一组协调节点或联盟链上的调度合约完成全局任务编排。这样既保留了域内调度的高效,又避免了全局单点。

混合模式的一个典型结构是“两级调度”:全局调度层负责把任务拆到参与方粒度,本地调度层负责把子任务拆到进程或容器粒度。全局层可以用主从,也可以用共识;本地层几乎总是主从。判断一个混合模式是否合理,关键看两点:跨域状态是否最小化,以及故障域是否被限制在本地。如果跨域状态过多,混合模式会退化成分布式单体;如果故障域没有隔离,本地节点故障仍会拖垮全局。

中心化 · 主从模式 Master Slave A Slave B 全局状态集中 · 单点风险 去中心化 · 对等模式 P1 P2 P3 协商一致 · 收敛较慢 混合模式 · 两级调度 全局调度层 域A本地调度 域B本地调度 域内集中 · 跨域协调 三种架构的关键维度对比 维度 主从模式 对等模式 混合模式 决策点 单一 Master 各节点协商 全局层 + 本地层 全局状态 Master 集中维护 各节点最终收敛 跨域最小化 故障切换 Master 选举/接管 天然无单点 故障域隔离 适用场景 可信中心 · 强实时 多方对等 · 弱信任 联盟协作 · 多域

选型判断:从信任模型出发

选择哪种架构,第一步不是看性能,而是看信任模型。如果存在一个各方都认可的可信中心(例如企业内部平台、或受监管的第三方),主从模式最简单、最可控。如果各方地位对等且互不信任,对等模式或基于共识的调度更合适,但要接受更高的协调延迟。如果是多个组织各自有内部平台、又需要跨组织协作,混合模式几乎是唯一现实选择。

第二步看任务粒度与实时性。细粒度、高频次的任务分派适合中心化,因为协商开销会淹没计算本身;粗粒度、低频次的跨域任务适合去中心化或混合,因为每次协商的成本可以被摊薄。第三步看故障容忍要求:主从模式需要额外设计 Master 选举(如基于 Raft 或外部协调服务),对等模式天然无单点但需要处理分区,混合模式则要把故障限制在域内。

在实际工程中,一个常见的折中是“逻辑中心化、物理去中心化”:调度决策由一组副本通过共识完成,对外表现为一个逻辑调度器。这样既保留了中心化的简单接口,又避免了物理单点。代价是每次调度决策都要经过共识,延迟通常在几十毫秒到几百毫秒量级,适合中低频任务。

一个可参考的混合调度配置示例

假设有三个参与方 A、B、C,各自有本地集群,需要联合执行一个纵向联邦学习任务。全局调度层部署在联盟链的智能合约上,负责记录任务元数据和参与方签名;本地调度层使用主从模式,Master 由各参与方内部选举产生。关键参数可以这样设定:

全局层:
  任务提交方式:链上合约调用
  参与方确认:2/3 多签
  任务超时:1800 秒
  状态存储:链上仅存哈希与状态码,明细存 IPFS

本地层(以参与方 A 为例):
  Master 选举:Raft,3 副本
  心跳间隔:3 秒
  失联判定:连续 3 次丢失
  子任务超时:300 秒
  重试策略:最多 2 次,失败后上报全局层

这个配置的核心思想是:跨域只同步必要状态(任务是否开始、是否完成、结果哈希),域内保留完整执行细节。当参与方 A 的某个 Worker 失败时,本地 Master 先重试;重试仍失败则上报全局层,由全局层决定是等待还是调整参与方集合。这样故障不会直接扩散到其他域,全局层也不会被海量心跳淹没。

常见误区

  • 把“去中心化”等同于“无调度”:对等模式仍然需要调度逻辑,只是决策分散在协商过程中,而不是不存在。
  • 在主从模式中忽略 Master 选举:没有选举机制的主从模式,Master 一挂整个任务就停摆,实际可用性远低于预期。
  • 混合模式中跨域状态过多:如果全局层保存了每个子任务的详细进度,混合模式就退化成了分布式单体,失去了分层意义。
  • 用一致性换性能却不评估延迟:共识带来的延迟在跨地域部署时可能达到数百毫秒,对高频调度是不可接受的。

总结来看,主从模式适合可信中心下的强实时调度,对等模式适合弱信任环境下的对等协作,混合模式适合多域联盟场景。三者不是互斥的,而是可以按域、按任务粒度组合使用。设计时先明确信任边界和故障域,再决定状态放在哪里、决策由谁做出,最后才是具体的调度策略和参数调优。