传统共识算法(如Raft和Paxos)属于部分同步算法,高度依赖领导者和超时机制。在广域网(WAN)环境中,如果领导者因崩溃或网络质量下降而故障,系统在选举出新领导者之前将无法处理写入操作,从而导致显著的可用性损失。
“遗憾的是,像Raft这样广泛部署的共识算法在Cloudflare这样的广域网中表现欠佳,因为它们依赖于领导者和超时机制。领导者是唯一被允许进行写入操作的副本,如果它因崩溃或网络质量下降而出现故障,系统将无法正常运行,直到其他某个副本超时并选出新的领导者为止。” —— James Larisch、Bob Halley、João Pedro Leite,Cloudflare研究工程师团队
为规避领导者不可达带来的故障,Meerkat采用QuePaxa算法,允许所有副本在不依赖领导者超时的情况下接受写入操作。Meerkat通过全局复制的共识日志实现强一致性,确保所有副本已提交操作的顺序和值达成一致,保证读写操作可线性化。
“Meerkat日志是由一系列槽组成的序列。一个槽是一个可能包含事件也可能不包含事件的“盒子”。包含事件的槽被称为已决槽。日志中所有的槽均为已决槽,唯独最后一个槽除外,它当前正在被决定。Meerkat的其中一个不变性是:如果任意两个副本对某个槽的值做了决定,那么这些值必须相同。换言之,任何两个副本都不会对已决槽的值产生分歧。” —— James Larisch、Bob Halley、João Pedro Leite,Cloudflare研究工程师团队
“有趣的是,这将是异步共识算法(QuePaxa)的首次生产环境部署。Paxos、Raft等算法都是部分同步的,这意味着它们依赖超时机制,只有当消息延迟相对于超时时间足够短时,才能推进执行。QuePaxa则不依赖超时机制,即使在消息延迟剧烈波动的情况下也能推进执行。问题在于,在正常情况下,其性能是否足够具有竞争力。” —— Hacker News 匿名从业者,社区评论
Meerkat并非为构建通用数据库系统而设计,其核心局限在于共识算法不可避免的大量往返通信开销。但在多区域强一致性部署场景下,Meerkat对共识开销的优化被视为突破传统Paxos延迟瓶颈的关键。
“QuePaxa在延迟与一致性权衡方面采取的方法非常精妙。研究表明,在多区域Paxos部署中,共识开销通常会增加40%至60%的延迟。因此,Meerkat的优化对于强一致性系统至关重要。” —— Aniket Ray,KPIT软件工程师
“Meerkat存在局限性。它并非为构建数据库这类通用数据系统而设计的。所有共识算法都伴随着代价:大量的往返通信。特别是QuePaxa,在初始提议者与多数副本之间,需要进行一到三次往返通信(通常如此,尽管有时可能更多),才能就一项提议达成一致并将事件添加到日志中。” —— James Larisch、Bob Halley、João Pedro Leite,Cloudflare研究工程师团队
Cloudflare推出Meerkat标志着分布式共识算法在广域网场景下从“部分同步”向“异步”探索的重要转折。传统Raft/Paxos在局域网表现优异,但在跨地域网络抖动下,领导者切换往往导致服务降级。Meerkat通过无领导者架构直接切中了这一痛点,牺牲了常态下极低的延迟(增加1-3次往返),换取了极端网络条件下的高可用性。这种权衡在通用数据库构建中可能显得昂贵,但对于Cloudflare这样需要维持全球控制平面强一致性的基础设施提供商而言,是一次精准的架构匹配。