4. 调度器架构设计
隐私计算任务编排的调度器,本质上要回答三个问题:谁来决定任务在哪些节点上执行、谁掌握全局状态、以及当某个节点失效时由谁接管。围绕这三个问题,业界形成了中心化与去中心化两大方向,并进一步落地为主从模式、对等模式和混合模式。理解它们的差异,不能停留在“有没有中心节点”这一层,而要落到状态存储位置、调度决策路径、故障切换方式和一致性代价上。
中心化调度:单一决策点
中心化调度由一个调度器(Scheduler)统一维护任务队列、节点资源和任务状态。所有参与方(数据提供方、计算方)向调度器注册能力,调度器按策略把任务分派下去。它的优点是全局视图清晰、策略容易实现、任务依赖和优先级可以集中管理;缺点是调度器成为单点,且在多参与方互不信任的场景下,谁来做这个中心往往难以达成一致。
中心化调度最典型的落地形态是主从模式(Master-Slave)。主节点负责接收任务、拆分DAG、分配子任务、收集心跳;从节点只负责执行和上报。以联邦学习的一轮训练为例,主节点在每轮开始时把当前全局模型版本号、参与方列表、本轮随机种子下发给从节点,从节点完成本地训练后回传梯度或模型更新,主节点聚合后再进入下一轮。这里主节点掌握的是“轮次状态”,从节点掌握的是“本地数据与本地计算状态”。
主从模式的关键工程参数包括:心跳间隔(如3秒)、失联判定阈值(如连续3次心跳丢失)、任务超时时间(如单轮训练300秒)、重试次数(如2次)。当从节点失联时,主节点需要决定是重派任务还是将该节点从本轮剔除。若采用剔除策略,聚合权重需要重新归一化,否则会引入偏差。这是主从模式中容易被忽视的一致性细节。
去中心化调度:对等协商
去中心化调度没有全局唯一的决策者,各节点通过共识或协商决定任务分配。最典型的是对等模式(Peer-to-Peer)。每个节点既是任务发起者也是执行者,任务通过 gossip、DHT 或共识协议传播。对等模式的优势是抗单点故障、参与方地位平等,适合多方对等协作且互不信任的场景;代价是全局状态收敛慢、任务冲突需要额外解决、调度策略难以做到全局最优。
对等模式中,任务分配通常依赖某种一致性机制。例如使用 Raft 或 PBFT 维护一份任务分配日志,或者使用 CRDT 让各节点的任务状态最终收敛。实际工程里,对等模式很少用于强实时的任务分派,更多用于任务发现、节点能力广播和结果校验。一个常见做法是:任务发起方广播任务描述,有意愿的节点返回报价(算力、数据可用性、信誉分),发起方按规则选择若干节点并直接建立点对点连接执行。此时“调度”分散在每次协商中,而不是集中在一个调度器里。
混合模式:分层与分区
纯中心化和纯对等都有明显短板,实际系统多采用混合模式。混合模式通常按“域”分层:每个参与方内部有一个本地调度器(中心化),负责本域资源管理和子任务执行;跨域之间由一组协调节点或联盟链上的调度合约完成全局任务编排。这样既保留了域内调度的高效,又避免了全局单点。
混合模式的一个典型结构是“两级调度”:全局调度层负责把任务拆到参与方粒度,本地调度层负责把子任务拆到进程或容器粒度。全局层可以用主从,也可以用共识;本地层几乎总是主从。判断一个混合模式是否合理,关键看两点:跨域状态是否最小化,以及故障域是否被限制在本地。如果跨域状态过多,混合模式会退化成分布式单体;如果故障域没有隔离,本地节点故障仍会拖垮全局。
选型判断:从信任模型出发
选择哪种架构,第一步不是看性能,而是看信任模型。如果存在一个各方都认可的可信中心(例如企业内部平台、或受监管的第三方),主从模式最简单、最可控。如果各方地位对等且互不信任,对等模式或基于共识的调度更合适,但要接受更高的协调延迟。如果是多个组织各自有内部平台、又需要跨组织协作,混合模式几乎是唯一现实选择。
第二步看任务粒度与实时性。细粒度、高频次的任务分派适合中心化,因为协商开销会淹没计算本身;粗粒度、低频次的跨域任务适合去中心化或混合,因为每次协商的成本可以被摊薄。第三步看故障容忍要求:主从模式需要额外设计 Master 选举(如基于 Raft 或外部协调服务),对等模式天然无单点但需要处理分区,混合模式则要把故障限制在域内。
一个可参考的混合调度配置示例
假设有三个参与方 A、B、C,各自有本地集群,需要联合执行一个纵向联邦学习任务。全局调度层部署在联盟链的智能合约上,负责记录任务元数据和参与方签名;本地调度层使用主从模式,Master 由各参与方内部选举产生。关键参数可以这样设定:
全局层:
任务提交方式:链上合约调用
参与方确认:2/3 多签
任务超时:1800 秒
状态存储:链上仅存哈希与状态码,明细存 IPFS
本地层(以参与方 A 为例):
Master 选举:Raft,3 副本
心跳间隔:3 秒
失联判定:连续 3 次丢失
子任务超时:300 秒
重试策略:最多 2 次,失败后上报全局层
这个配置的核心思想是:跨域只同步必要状态(任务是否开始、是否完成、结果哈希),域内保留完整执行细节。当参与方 A 的某个 Worker 失败时,本地 Master 先重试;重试仍失败则上报全局层,由全局层决定是等待还是调整参与方集合。这样故障不会直接扩散到其他域,全局层也不会被海量心跳淹没。
常见误区
- 把“去中心化”等同于“无调度”:对等模式仍然需要调度逻辑,只是决策分散在协商过程中,而不是不存在。
- 在主从模式中忽略 Master 选举:没有选举机制的主从模式,Master 一挂整个任务就停摆,实际可用性远低于预期。
- 混合模式中跨域状态过多:如果全局层保存了每个子任务的详细进度,混合模式就退化成了分布式单体,失去了分层意义。
- 用一致性换性能却不评估延迟:共识带来的延迟在跨地域部署时可能达到数百毫秒,对高频调度是不可接受的。
总结来看,主从模式适合可信中心下的强实时调度,对等模式适合弱信任环境下的对等协作,混合模式适合多域联盟场景。三者不是互斥的,而是可以按域、按任务粒度组合使用。设计时先明确信任边界和故障域,再决定状态放在哪里、决策由谁做出,最后才是具体的调度策略和参数调优。