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

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/?resourcetypeWebinar)- [白皮书](https://www.cloudflare.com/resource-hub/?resourcetypeWhitepaper)- [开发者文档](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)

最新新闻

日新闻

周新闻

月新闻