Gossip算法学习笔记

来源:互联网 发布:中文域名重要性 编辑:程序博客网 时间:2024/06/05 05:20

主要参考了《分布环境下的Gossip算法》这篇论文,并包含在网上整理的一些资料。
简介:Gossip 算法又被称为反熵(Anti-Entropy),熵是物理学上的一个概念,代表杂乱无章,而反熵就是在杂乱无章中寻求一致.
Gossip 的特点:在一个有界网络中,每个节点都随机地与其他节点通信,经过一番杂乱无章的通信,最终所有节点的状态都会达成一致。每个节点可能知道所有其他节点,也可能仅知道几个邻居节点,只要这些节可以通过网络连通,最终他们的状态都是一致的,当然这也是疫情传播的特点。简单的描述下这个协议,首先要传播谣言就要有种子节点。种子节点每秒都会随机向其他节点发送自己所拥有的节点列表,以及需要传播的消息。任何新加入的节点,就在这种传播方式下很快地被全网所知道。这个协议的神奇就在于它从设计开始就没想到信息一定要传递给所有的节点,但是随着时间的增长,在最终的某一时刻,全网会得到相同的信息。当然这个时刻可能仅仅存在于理论,永远不可达。
Gossip应用场景:数据库复制,故障探测,P2P的拓扑构造及维护,分布环境下的聚合计算等。

概念

-1、网络结构模型:类似于图,每次交流都是图的一条边;
-2、时间模型:同步时间模型,异步时间模型;

衡量标准

-1、效率:完成Gossip传播需要的时间;
-2、通信开销:完成Gossip传播所需要付出的通信开销,使用节点之间两辆交互的次数表示。

影响因素

-1、网络结构:节点的连接关系,完全图,树形图;
-2、交互模式:在通信代价和可靠性取折中,一般采用Rumor mongering(只交换新信息),定时使用Anti-entropy,以保证信息交换的可靠性。
目前节点键的信息交换方法主要有三种:
push: A节点将数据(key,value,version)及对应的版本号推送给B节点,B节点更新A中比自己新的数据
pull:A仅将数据key,version推送给B,B将本地比A新的数据(Key,value,version)推送给A,A更新本地
push/pull:与pull类似,只是多了一步,A再将本地比B新的数据推送给B,B更新本地
-3、联系节点数目
每个周期联系节点个数不同会对算法执行产生影响。

Gossip应用

-1、数据库复制:
基于Gossip实现分布数据管理的一般思路是:在一个节点实现数据更新,通过算法将更新传播到其他节点。
-2、聚焦计算:
在大型分布计算环境中,许多应用需要获得全局统计信息,以提高其服务质量或者均衡网络负载。
-3、基于Gossip的Overlay构造
Overlay网络是构建在已有网络之上的一个由节点和逻辑链路构成的虚拟拓扑结构。以Gossip机制为基础,在信息交换过程中对Overlay中的节点以及节点之间的关系进行管理,从而维护一个具有某种特性的网络拓扑。

Gossip是一种去中心化、容错而又最终一致性的绝妙算法,其收敛性不但得到证明还具有指数级的收敛速度。使用Gossip的系统可以很容易的把Server扩展到更多的节点,满足弹性扩展轻而易举。