“传染病协议”(epidemic protocol)有事也是gossip协议的同义词,因为gossip协议传播信息的方式,有时候很类似于生物体内的病毒传播。
(以上来自维基百科)
名字起得有点大,这次写的其实只是gossip算法中的其中一种实现方法——传播协议(散布谣言协议)。他采用gossip来传播信息;他们主要以“洪泛”方式在网络中工作。具体内容就是:几个节点,在一个统一的调度者的调度下,周期性的进行节点间的信息传递,也就是常说的“散布谣言”。由于不同的方法所采用的散布手段是不同的,这里介绍的是其中的一种具体方法如下:
局部视图(view)传播方式: 节点向外发送(push)
视图(view)选择策略: 发送节点view表的头部——即发送节点视图的第一个信息(head)
节点个数暂定为:4
一、调度者
首先介绍调度者得主要工作 ,调度者负责在每个周期内随机的顺序安排这4个节点进行信息的互相传播,具体算法如流程图1.

流程图1
解析:在这里,我设定了b1,b2,b3,b4分别代表该网络中的四个节点bi[0..1],当任意bi=0时,表示该节点在本周期内没有被调动,当bi=1时则表示bi已执行过信息的发送。具体如何实现每个周期内bi的控制,不同的语言有不同的写法,在这里就不赘述了,不会很难。
二、节点
这里需要详细的说明,首先介绍每个节点所包含的具体信息。
我假设模型如下:每个节点包含一张view表格,表格的每一项为其他节点的两项基本信息,包括该节点的ID(地址)和hopcount(传播次数)。由于设定的网络模型内只包含4个节点,所以view表的长度我设定为2,即每个节点的view表内最多只能包括两个节点的基本信息。
由于每个节点在网络中的任务有两项:发送信息给其他节点、接受其他节点发送给自己的信息。所以我把发送和接受的流程图对照这进行描述,如流程图2。

流程图2
本文介绍了Gossip协议在分布式系统中的应用,重点讲解了一种具体的实现方法——局部视图传播方式。通过模拟节点间的“流言”传播过程,该文详细阐述了节点如何周期性地进行信息交换,并给出了具体算法流程。
2515

被折叠的 条评论
为什么被折叠?



