Cloudflare Meerkat:用 QuePaxa 无 Leader 共识改写全球分布式控制面

前言

Cloudflare 在全球 330+ 数据中心 上运行大量内部服务,这些服务需要跨地域读写同一份控制面状态——例如 AI 模型实例的放置位置、数据库主节点选举信息等。这类数据必须满足两个硬约束:强一致性(所有读者看到的世界一致)和高可用性(单个机房或链路故障时仍能写入)。

2026 年 7 月,Cloudflare Research 团队发布博客,正式介绍实验性共识服务 Meerkat。它基于 2023 年 EPFL 研究者提出的 QuePaxa 共识算法,允许任意副本发起写入,不依赖 Leader 选举与超时机制。Cloudflare 称,这将是 QuePaxa 在全球规模上的首次工业级部署尝试。InfoQ 等权威媒体随后跟进报道,引发分布式系统社区广泛讨论。

本文梳理 Meerkat 的设计动机、核心架构,以及 QuePaxa 与 Raft 的本质差异,帮助读者理解这一「无 Leader 全球共识」实验的价值与边界。

控制面共识:Cloudflare 为何需要 Meerkat

强一致性与故障容忍

Cloudflare 对控制面数据系统的需求可以概括为两点:

  1. 线性一致性(Linearizability):客户端写入后,后续所有读操作都能看到该写入;并发读写不会出现「时光倒流」式的诡异行为。
  2. 多数派容错:在 2f+1 个副本中容忍 f 个故障;只要多数副本存活且可通信,任意数据中心的客户端都能完成读写。

控制面数据写入频率通常不高,但一致性要求极严——一次错误的 Leader 选举或状态不一致,可能导致全局路由、资源调度出现连锁故障。Cloudflare 博客坦言,团队曾多次遭遇 Raft 类 Leader 不可用 引发的生产事故。

Raft 在广域网的「超时暴政」

Raft 是目前最主流的共识算法之一,实现清晰、生态成熟。但其权威 Leader 模型在 Cloudflare 这类跨洲际广域网中暴露出结构性问题:

  • Leader 是唯一写入入口:Leader 宕机或网络劣化时,所有写入阻塞,直到新 Leader 选出。
  • 超时值难以调优:广域网延迟波动剧烈——超时设短则频繁误触发选举,设长则故障恢复慢;多副本同时竞选还会互相干扰,形成「选举风暴」。
  • Leader 成为性能瓶颈:Leader 过载或链路变慢时,整个集群写入吞吐下降。

Cloudflare 将这类问题称为 「tyranny of timeouts」(超时暴政)——部分同步(partially synchronous)算法依赖超时推进进度,而互联网环境恰恰无法给出稳定的超时基准。

QuePaxa:Escaping the Tyranny of Timeouts

算法背景

QuePaxa 由 Tennage、Băsescu 等研究者于 2023 年 在 SOSP 发表,论文标题为 Escaping the Tyranny of Timeouts in Consensus。与 Paxos、Raft 等部分同步算法不同,QuePaxa 面向异步网络设计,不依赖超时来推进共识,消息延迟剧烈波动时仍可继续做出决策。

核心设计要点:

  1. 任意副本可驱动共识:客户端可向任意副本提交请求,该副本即可为日志最新 slot 发起提案,无需等待 Leader。
  2. Leader 可选而非必需:QuePaxa 中存在 Leader 角色,但其优势仅在于减少往返次数(Leader 提案约 1 次 RTT,非 Leader 约 3+ 次 RTT);Leader 故障不会阻塞系统。
  3. 并发提案「建设性干扰」:多个副本同时提案时,副本协作选出唯一值,不会像 Raft 选举那样破坏性冲突。
  4. 客户端可并发联系多副本:同一提案可同时发往多个副本,提高成功率。

论文作者在 WAN 规模原型实验中报告:在 DoS 攻击、错误配置、慢 Leader 等恶劣条件下,QuePaxa 吞吐量约为 Raft 和 Multi-Paxos 的 ~10 倍,中位延迟仍保持在亚秒级。

Meerkat 架构概览

共识日志(Consensus Log)

Meerkat 的核心是一条全局复制的共识日志。日志由一系列 slot 组成:已决定的 slot 包含事件,最后一个 slot 正在决策中。关键不变量:任意两个副本对同一已决定 slot 的值必须一致

工作流程如下:

  1. 开发者申请一个 Meerkat 副本集群,指定副本可部署的数据中心,Meerkat 自动放置。
  2. 客户端向任意副本发送应用请求(如 KV 的 get / put)。
  3. 副本将请求翻译为日志事件,通过 QuePaxa 分发至所有副本。
  4. 上层应用(如事务性 KV 存储、分布式租约系统)读取日志事件,在本地重建一致状态。

为保证线性一致性,读操作(get)也会写入日志——若读副本尚未看到前序写入所在的 slot,多数派会强制其先同步旧决策,再在新 slot 记录读事件,从而将读线性化到写之后。

上层应用

Meerkat 本身不解析日志内容,由上层应用消费。目前已规划的应用包括:

  • 事务性键值存储:支持 compare-and-swap 及通用事务。
  • 分布式租约/锁系统:用于数据库 Leader 选举等场景。

Meerkat 明确不是通用数据库,仅面向写入频率低、一致性要求高的控制面小状态。

QuePaxa 相对 Raft 的三点优势

Cloudflare 博客总结了 Meerkat 选择 QuePaxa 的三条理由,均与广域网运维经验直接相关:

维度 Raft QuePaxa(Meerkat)
写入入口 仅 Leader 任意健康副本
Leader 故障 阻塞至新 Leader 选出 无阻塞,客户端换副本即可
进度推进 依赖超时与选举 不依赖超时,异步网络可推进
并发提案 选举互相干扰 建设性协作,选出唯一值
一致性模型 可线性化(配合 lease) 线性化(读也走日志)

InfoQ 报道中,社区开发者指出 QuePaxa 属于异步共识算法,这是与 Paxos/Raft 等部分同步方案的本质区别;也有 practitioners 质疑额外往返带来的延迟是否值得——Cloudflare 的回应是,控制面场景写入稀疏,可用性优先于极致延迟。

性能评估与优化手段

共识算法天然代价是多轮网络往返。QuePaxa 决定一个提案通常需要 1–3 次 RTT(Leader 提案 1 次 + 广播通知;非 Leader 3 次 + 广播;并发提案可能更多)。决策延迟与多数副本之间的 RTT 成正比——副本跨洲分布时,延迟无法回避。

Meerkat 提供的性能优化手段包括:

  1. 副本放置可控:开发者指定副本所在数据中心,非全球强需求的服务可将副本拉近。
  2. 写入批处理:短时间内的多条写入合并为单个提案,提升吞吐。
  3. 弱一致读可选:允许读取本地副本的略旧但一致的数据,跳过共识轮次。
  4. 单轮多操作:compare-and-swap 等操作可在一次共识中完成。

Cloudflare 强调,Meerkat 的 fundamental latency 限制在广域网场景下客观存在,因此最适合写入不频繁、一致性不可妥协的控制面信息。

当前进展与未来计划

截至 2026 年 7 月博客发布时,Meerkat 状态如下:

  • 尚未部署生产环境,定位为实验性内部服务,近期保持 internal-only。
  • 已完成多轮 PoC(概念验证),最多在全球 50 个副本上运行;PoC 中 Leader 持续故障,集群错误率未上升。
  • 实现语言为 Rust,团队计划对部分实现做形式化验证
  • 未来一年将陆续发布系列文章,涵盖 QuePaxa 细节、集群引导与管理、最优副本放置、确定性仿真测试(DST)等;同时准备学术论文投稿。

Cloudflare Research 工程师 James Larisch、Bob Halley、João Pedro Leite 是 Meerkat 项目的主要作者。

社区观察与开放问题

Hacker News 等社区对 Meerkat 的讨论集中在几个方向:

  • 异步共识的首个生产级实现? 若 Meerkat 最终上线,QuePaxa 将成为少数走出论文、进入工业实践的异步共识方案。
  • 正常场景下的性能竞争力:恶劣条件下 ~10x 吞吐优势明显,但日常低延迟 WAN 部署中,额外 RTT 是否可接受,仍需更多 benchmark 数据。
  • 开源与规范:部分开发者希望 Cloudflare 公开设计规范与验证细节,以便社区复现和审计。

Cloudflare 尚未公布生产上线时间表及生产级延迟数据。对于外部开发者,Meerkat 目前更多是分布式共识工程实践的重要参考,而非可直接使用的开源组件。

小结

Cloudflare Meerkat 尝试用 QuePaxa 解决一个真实且普遍的问题:在不可预测的广域网上,如何用共识算法管理全球控制面状态,同时避免 Leader 与超时带来的可用性陷阱。它不提供新的通用数据库,而是为「强一致、低写入、高可用」的控制面场景提供了另一种算法选型。

对关注分布式系统的工程师而言,Meerkat 的价值在于:它将 2023 年 QuePaxa 论文中的异步共识思想,放到了 330+ 数据中心、50 副本 PoC 的真实规模上验证;无论最终是否全面投产,这一工程路径本身都值得持续跟踪。

参考来源:

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜