Cloudflare推出Meerkat:QuePaxa算法助力,突破Raft局限实现全球共识实验

免费开始与联系销售

[免费开始](https://dash.cloudflare.com/sign-up) | [联系销售](https://www.cloudflare.com/plans/enterprise/contact/)

文章相关信息

订阅以接收新文章通知:订阅

文章标签

[人工智能](/tag/ai/)
[开发者](/tag/developers/)
[Radar](/tag/cloudflare-radar/)
[产品新闻](/tag/product-news/)
[安全](/tag/security/)
[政策与法律](/tag/policy/)
[零信任](/tag/zero-trust/)
[速度与可靠性](/tag/speed-and-reliability/)
[Cloudflare职场生活](/tag/life-at-cloudflare/)
[合作伙伴](/tag/partners/)

文章标题与日期

# 介绍Meerkat:一次全球共识实验
2026年7月8日

文章作者

- [James Larisch](/author/james-larisch/)
- [Bob Halley](/author/bob-halley/)
- [João Pedro Leite](/author/joao-pedro-leite/)

阅读时长

阅读时长:12分钟

背景介绍

Cloudflare的许多内部服务需从全球330多个数据中心读取和修改相同的控制平面状态。这些服务要确保不同读取方“永远”不会看到不一致的状态,且即便部分数据中心或链路故障,系统仍能写入。

然而,Cloudflare网络遍布不可预测的互联网,服务器和数据中心可能停机,队列可能满,链路和电缆可能被切断,这使运行保证强一致性的全球可用数据系统困难,因恶劣条件会阻碍分布式系统副本间可靠同步数据。

共识算法需求与问题

在不利网络条件下安全同步数据可通过“共识算法”,只要大多数机器运行并能通信,该算法允许一组机器就相同值序列达成一致,如键值存储的 `put` 和 `get` 操作。

但像 [_Raft_](https://raft.github.io/) 这样常用的共识算法在Cloudflare的广域网中表现不佳,因其依赖“领导者”和“超时机制”。“领导者”是唯一可写入的副本,若其故障,系统将不可用,直到其他副本“超时”选出新领导者,且在不可预测延迟的网络中,超时值难配置。Cloudflare在基于共识的系统中多次经历因领导者不可用导致的事故。

Meerkat的诞生

因此,过去一年里,Cloudflare的研究 [_团队_](https://research.cloudflare.com/) 构建了名为 **Meerkat** 的新分布式共识服务,由 [_QuePaxa_](https://bford.info/pub/os/quepaxa/quepaxa.pdf) 共识算法支持。QuePaxa算法由EPFL研究人员在2023年发表,与Raft不同,其所有副本可随时写入,进度不会因超时而停止,适合Cloudflare网络。Cloudflare在Meerkat的共识日志之上构建了事务性键值存储和租赁系统等“应用程序”,这将是QuePaxa在全球的首次工业部署。

Meerkat是仍在开发的实验性共识服务,最初用于管理控制平面状态的小部分内容,短期内仅内部使用。本文介绍Meerkat,并为后续相关博客文章奠定基础。

全球控制平面数据系统需求

强一致性

许多Cloudflare服务从世界各地多台机器读写“控制平面数据”,如“放置信息”“领导权信息”,控制平面数据需具备“强一致性”且在特定故障时仍可访问。

分布式数据系统的 [_一致性_](https://jepsen.io/consistency/models) 级别描述了系统在接收并发读写操作时的异常行为。以分布式键值存储为例,不同一致性级别下,客户端执行写入操作后读取 `x` 可能看到不同的值。在弱一致性级别,写入操作可重新排序;在较强一致性模型中,写入操作不能重新排序,但读取操作可以;在最强的一致性级别,操作执行顺序与现实时间发生顺序完全一致,即“线性一致性”。Cloudflare许多服务需要线性一致性,它使程序员无需考虑数据系统异常行为,可像在单线程机器上处理本地内存一样推理分布式系统。Meerkat的键值存储还提供可串行化性,将在未来文章详细介绍。

容错性

系统的容错级别描述了系统在灾难前能处理的故障类型,灾难指系统未能维持目标属性。这些故障包括网络故障或延迟、机器崩溃和重启。

Cloudflare期望的数据系统容错属性如下:
**首先**,只要系统中大多数机器运行且能相互通信,客户端能联系到与大多数存活机器相连的机器,数据系统就能让任何数据中心的客户端进行读写操作,单个机器故障或链路网络性能下降不影响系统可用性,基于Raft的系统不具备此属性。
**其次**,只要系统无主动恶意行为者和漏洞,数据系统就能保持“正确性”,即两台最新状态的机器永远不会对系统状态产生分歧。总之,即使机器崩溃、重启、网络故障或性能下降、数据中心停机,系统也必须保持正确,但不处理 [_拜占庭故障_](https://en.wikipedia.org/wiki/Byzantine_fault)。

Meerkat介绍

总体架构

Meerkat是共识服务,可在其上构建具备强一致性和容错性的应用程序,如键值(KV)存储。使用Meerkat的服务开发者可请求由Meerkat“副本”组成的“集群”,每个副本相互连接,参与共识算法,可接收读写操作。开发者可指定托管副本的数据中心,Meerkat会自动放置。开发者客户端向集群中任何副本发送特定于应用程序的请求,副本用特定响应回复,KV读取保证能读取到最新信息。

Meerkat的日志

副本会将应用程序请求转换为“日志事件”,使用共识算法将其分发到其他副本,使所有副本维护相同的事件日志。Meerkat“应用程序”关注日志事件内容,每个副本“托管”许多应用程序,如键值存储,它们读取日志事件并构建状态。例如,KV Meerkat应用程序从日志事件中构建内存中的键值存储,写入操作会被放入日志事件分发到所有副本,所有正常运行的副本按顺序应用日志操作构建相同状态,`get` 请求也会创建分布式日志事件。

Meerkat的日志实现强一致性

Meerkat保证线性一致性,如一个客户端执行 `put k1 v1`,第二个客户端执行 `put k1 v11`,第三个客户端执行 `get k1`,无论请求提交到哪个副本,第三个客户端都将读取到 `v11`。

Meerkat日志是插槽序列,插槽可包含事件或为空,包含事件的插槽为“已决定”插槽,除最后一个插槽外,日志中其他插槽都是已决定的。Meerkat的不变性是,若两个副本为一个插槽决定了一个值,那么这些值相同。

为决定日志中最后一个插槽的值,Meerkat副本会运行分布式“共识算法”,只要大多数副本运行,算法就能正常工作。若客户端向副本提交 `put k1 v11`,该副本会触发对插槽 3 的共识算法,若另一个客户端已为插槽 3 提交 `put k1 v111`,共识算法确保只有一个提案在插槽 3 获胜,即至少大多数副本就同一个提案达成一致。

若一个读取者在副本 Y 上执行 `get k1`,而副本 Y 认为插槽 3 为空,提出 `get k1` 提案,但大多数副本不会同意,会迫使副本 Y 在插槽 3 决定 `put k1 v11`,并在插槽 4 提出 `get k1` 提案,从而线性化写入操作后的读取操作。若副本无法联系到大多数副本,将无法完成读取操作。

Meerkat的共识算法比Raft提供更高可用性

决定日志条目需分布式共识算法,但并非所有算法都能提供相同的可用性保证。许多依赖权威领导者的算法,如 [_Raft_](https://raft.github.io/),当单个机器出现问题时可能变得不可用。Raft依赖权威领导者,所有写入操作转发到领导者,虽有助于理解且结合 [_租约_](https://dl.acm.org/doi/epdf/10.1145/3786663) 可使领导者提供的读取操作自动实现线性一致性,但增加了单点故障。

权威领导者存在两个问题:一是领导者停机,系统将不可用,直到选出新领导者,这对Meerkat不可接受;二是领导者运行变慢,性能会下降,因为领导者是写入操作的瓶颈。在广域网中,这些问题更严重,如领导者停机时,使用“超时机制”选新领导者,超时时间设置困难,多个副本同时自荐为领导者还会相互干扰,导致写入操作阻塞。

Meerkat选择的 [_QuePaxa_](https://bford.info/pub/os/quepaxa/quepaxa.pdf) 共识算法避免了这些问题。客户端可联系“任何”副本推动最新插槽的共识,虽有领导者,但不是必需的,其唯一优势是推动共识的往返次数少。关键是,客户端可同时联系多个副本增加提案成功机会,并发提案不会产生破坏性干扰,副本会共同协作决定提案值。

QuePaxa比Raft有三个优势:
1. 无需领导者,系统不会因单个副本问题变得不可用或性能下降,只要客户端能联系到健康副本,就可进行写入操作。
2. 无领导者选举,不同副本提出的并发提案会建设性地相互干扰,适合Cloudflare网络延迟变化大的情况。
3. QuePaxa为不太可靠的网络环境和可能存在假想对手攻击的网络设计,吞吐量比Raft和Multi - Paxos高约10倍,更符合Cloudflare网络情况。

评估Meerkat的性能

Meerkat有局限性,并非用于创建通用数据系统。所有共识算法都有成本,如QuePaxa在初始提议者和大多数副本之间需一到三次往返才能决定提案并添加事件到日志,领导者提出提案需一次往返加一次广播,非领导者需三次往返加广播,多个副本同时提案可能需更多往返,提案决策延迟与大多数副本之间的延迟成正比,副本距离远会增加延迟。

乍一看,Meerkat的写入和读取延迟较高,但可通过以下方法提高性能:
1. 开发者可控制副本位置,将副本放置更近以减少往返延迟(适用于不需要全球分布的服务)。
2. 写入操作可批量处理,提高吞吐量。
3. 若开发者可接受读取“陈旧”但一致的数据,可从“任何”副本的本地数据中读取。
4. 多个操作可捆绑到一个共识轮次中,如键值存储支持比较并交换式的写入操作和一般事务操作。

尽管如此,Meerkat在全球规模运行时仍有基本延迟限制,适合用于不经常写入但必须保持一致的控制平面信息。

下一步计划

Meerkat尚未部署到生产环境,但已进行多次概念验证,使用多达50个分布在世界各地的副本,且取得巨大成功。“在我们的概念验证集群中,领导者不断出现故障,但集群仍能继续运行,错误率没有增加。”

未来一年,将撰写关于Meerkat的文章,讨论QuePaxa实际工作原理、Rust实现的形式验证、启动和集群管理方式、最佳副本放置位置、使用确定性模拟测试发现漏洞等内容,还将准备手稿进行同行评审。随着Meerkat的发展,可关注Cloudflare博客和 [_Cloudflare Research_](https://research.cloudflare.com/) 上的更多项目。

相关标签

[研究](/tag/research/) [网络](/tag/network/) [数据库](/tag/database/) [分布式系统](/tag/distributed-systems/) [Meerkat](/tag/meerkat/)

关注信息

在X上关注我们
James Larisch | [@jameslarisch](https://x.com/@jameslarisch)
Cloudflare | [@cloudflare](https://x.com/@cloudflare)

相关文章

2026年6月18日

[构建你自己的漏洞利用框架](/build-your-own-vulnerability-harness/)
我们将剖析我们的多阶段漏洞发现框架和自动分类循环背后的技术架构。了解我们如何管理状态控制、通过对抗性审查消除误报,以及绕过大语言模型的上下文限制......
作者:
- [Dan Jones](/author/dan-jones/)
- [Alexandra Godoi](/author/alexandra-godoi/)
- [Grant Bourzikas](/author/grant/)
[安全](/tag/security/) [人工智能](/tag/ai/) [工程](/tag/engineering/) [研究](/tag/research/) [漏洞](/tag/vulnerabilities/)

2026年5月14日

[我们的计费管道突然变慢了。罪魁祸首是ClickHouse中的一个隐藏瓶颈](/clickhouse-query-plan-contention/)
当我们的PB级ClickHouse集群的分区更改导致关键计费作业停滞时,标准指标没有显示明显的错误。本文将探讨我们如何识别ClickHouse查询规划器中的严重锁争用问题,并构建上游补丁来修复它......
作者:
- [James Morrison](/author/james-morrison/)
- [Christian Endres](/author/christian-endres/)
[ClickHouse](/tag/clickhouse/) [工程](/tag/engineering/) [性能](/tag/performance/) [数据库](/tag/database/) [开源](/tag/open-source/)

2026年4月21日

[超越机器人与人类的对抗](/past-bots-and-humans/)
随着AI助手和隐私代理对传统机器人检测能力提出挑战,网络需要新的问责模型。我们认为控制权应该掌握在客户端手中,并且一个开放的匿名凭证生态系统是在保护用户隐私的同时保护源站免受滥用的关键......
作者:
- [Thibault Meunier](/author/thibault/)
[研究](/tag/research/) [机器人](/tag/bots/) [隐私](/tag/privacy/) [标准](/tag/standards/) [更美好的互联网](/tag/better-internet/) [人工智能](/tag/ai/)

2026年4月17日

[Unweight:我们如何在不牺牲质量的情况下将大语言模型压缩22%](/unweight-tensor-compression/)
在Cloudflare的网络上运行大语言模型要求我们在GPU内存带宽方面更加智能和高效。这就是我们开发Unweight的原因,它是一种无损推理时压缩系统,可以将模型占用空间减少多达22%,从而使我们能够提供比以往更快、更便宜的推理服务......
作者:
- [Mari Galicer](/author/mari/)
- [Ivan Nikulin](/author/ivan-nikulin/)
- [Chris Branch](/author/chris/)
[代理周](/tag/agents-week/) [研究](/tag/research/) [人工智能](/tag/ai/)

Cloudflare的相关资源与服务

- 开始使用
- [免费计划](https://www.cloudflare.com/plans/free/)
- [企业版](https://www.cloudflare.com/enterprise/)
- [比较计划](https://www.cloudflare.com/plans/)
- [获取推荐](https://www.cloudflare.com/about-your-website/)
- [请求演示](https://www.cloudflare.com/plans/enterprise/demo/)
- [联系销售](https://www.cloudflare.com/plans/enterprise/contact/)

- 资源
- [学习中心](https://www.cloudflare.com/learning/)
- [分析师报告](https://www.cloudflare.com/analysts/)
- [Cloudflare Radar](https://radar.cloudflare.com/)
- [Cloudflare TV](https://cloudflare.tv/)
- [案例研究](https://www.cloudflare.com/case-studies/)
- [网络研讨会](https://www.cloudflare.com/resource-hub/?resourcetype=Webinar)
- [白皮书](https://www.cloudflare.com/resource-hub/?resourcetype=Whitepaper)
- [开发者文档](https://developers.cloudflare.com)
- [theNet](https://www.cloudflare.com/the-net/)

- 解决方案
- [连接云](https://www.cloudflare.com/connectivity-cloud/)
- [SSE和SASE服务](https://www.cloudflare.com/zero-trust/)
- [应用服务](https://www.cloudflare.com/application-services/)
- [网络服务](https://www.cloudflare.com/network-services/)
- [开发者服务](https://www.cloudflare.com/developer-platform/)

- 社区
- [社区中心](https://community.cloudflare.com)
- [Project Galileo](https://www.cloudflare.com/galileo/)
- [Athenian Project](https://www.cloudflare.com/athenian/)
- [Cloudflare for Campaigns](https://www.cloudflare.com/campaigns/)
- [Connect 2024](https://www.cloudflare.com/connect2024/)

- 支持
- [帮助中心](https://support.cloudflare.com)
- [Cloudflare状态](https://www.cloudflarestatus.com)
- [合规性](https://www.cloudflare.com/compliance/)
- [GDPR](https://www.cloudflare.com/gdpr/introduction/)
- [信任与安全](https://www.cloudflare.com/trust-hub/abuse-approach/)

- 公司
- [关于Cloudflare](https://www.cloudflare.com/about-overview/)
- [我们的团队](https://www.cloudflare.com/people/)
- [投资者关系](https://cloudflare.net/)
- [新闻媒体](https://www.cloudflare.com/press/)
- [职业机会](https://www.cloudflare.com/careers/)
- [多元化、公平与包容](https://www.cloudflare.com/diversity-equity-and-inclusion/)
- [影响/ESG](https://www.cloudflare.com/impact/)
- [网络地图](https://www.cloudflare.com/network/)
- [标志与媒体资料包](https://www.cloudflare.com/press-kit/)
- [成为合作伙伴](https://www.cloudflare.com/partners/)

社交链接

[![Facebook](https://www.cloudflare.com/img/footer/facebook.svg)](https://www.facebook.com/Cloudflare/) [![X](https://www.cloudflare.com/img/footer/twitter.svg)](https://x.com/Cloudflare) [![LinkedIn](https://www.cloudflare.com/img/footer/linkedin.svg)](https://www.linkedin.com/company/cloudflare) [![YouTube](https://www.cloudflare.com/img/footer/youtube.svg)](https://www.youtube.com/cloudflare) [![Instagram](https://www.cloudflare.com/img/footer/instagram.svg)](https://www.instagram.com/cloudflare)