知识卡片
Gossip协议用流言式传播实现最终一致性及反熵与传谣的权衡
内容
Paxos/Raft/ZAB这类共识算法被称为”强一致性”,准确说法是”系统内部可以 暂时不一致,但从外部观察不到这种不一致”;与之相对的是”最终一致性”协议 ——系统内部不一致的状态可能被外部直接观察到,DNS的TTL缓存过期机制就是 典型例子。Gossip(又名流言算法、瘟疫算法)是这类协议的代表,工作过程极 简单:信息从源节点出发,按固定周期随机选择k个相邻节点(Fan-Out)扩散 传播;每个节点收到没见过的消息后,在下一周期继续向除发送者外的其他相邻 k个节点转发,如此循环直到全网收到。这个设计几乎不对网络连通性和稳定性 提要求——不假设全连通网络、能容忍节点随意增减和宕机重启,具有很强的 鲁棒性,适合公众互联网这种不可控环境(比特币网络用Gossip同步区块头/ 区块体信息,只是”记账权归谁”这个共识仍需另外靠工作量证明PoW来达成, Gossip本身并不等价于Paxos/Raft那种共识算法)。代价是消息经多轮次传播 到达全网、必然存在阶段性不一致,且无法为单条消息精确预计传播完成时间, 同时随机选择目标节点会造成消息重复发送的冗余开销。为在”达成一致所需 时间”和”消息冗余量”之间取舍,Gossip设计了两种模式:反熵(同步全部数据、 追求各节点完全一致,但传输开销大)和传谣(只发送变更增量、开销小但达到 完全一致的确定性弱),两者是此消彼长的关系。
参考来源
- 位置:《凤凰架构:构建可靠的大型分布式系统》第6章"分布式共识"6.3节
"Gossip协议"(源文件:_epub-src对应OEBPS/Text/chapter82.xhtml)
- 结论依据:原文说明强一致性协议实为"外部观察不到内部不一致",Gossip
属于最终一致性协议,详述其固定周期随机Fan-Out传播机制、不要求全连通
网络的鲁棒性,以及反熵(同步全部数据)与传谣(只发变更)两种模式在
一致性时间与消息冗余间的权衡,直接支撑本卡片结论。
- 原始内容:如果有某一项信息需要在整个网络的所有节点中传播……随机选择
它相连接的k个节点(称为Fan-Out)来传播消息……由此,Gossip设计了两种
可能的消息传播模式:反熵(Anti-Entropy)和传谣(Rumor-Mongering)。