关闭

Gossip 协议

1008人阅读 评论(0) 收藏 举报
分类:
Gossip 协议是电脑之间的通信协议,受启发与现实社会的流言蜚语。现代分布式系统通常用gossip协议来解决一些用其他方法难以解决的问题,可能是因为当前网络有一个不便的问题——过于庞大,或许是因为gossip协议有时候是最为行之有效的方法。

   “传染病协议”(epidemic protocol)有事也是gossip协议的同义词,因为gossip协议传播信息的方式,有时候很类似于生物体内的病毒传播。

   (以上来自维基百科)

名字起得有点大,这次写的其实只是gossip算法中的其中一种实现方法——传播协议(散布谣言协议)。他采用gossip来传播信息;他们主要以“洪泛”方式在网络中工作。具体内容就是:几个节点,在一个统一的调度者的调度下,周期性的进行节点间的信息传递,也就是常说的“散布谣言”。由于不同的方法所采用的散布手段是不同的,这里介绍的是其中的一种具体方法如下:

局部视图(view)传播方式: 节点向外发送(push)
   视图(view)选择策略: 发送节点view表的头部——即发送节点视图的第一个信息(head)

节点个数暂定为:4

一、调度者

首先介绍调度者得主要工作 ,调度者负责在每个周期内随机的顺序安排这4个节点进行信息的互相传播,具体算法如流程图1.

gossip protocol - Crosslandy - Crosslandy

 流程图1

 

解析:在这里,我设定了b1,b2,b3,b4分别代表该网络中的四个节点bi[0..1],当任意bi=0时,表示该节点在本周期内没有被调动,当bi=1时则表示bi已执行过信息的发送。具体如何实现每个周期内bi的控制,不同的语言有不同的写法,在这里就不赘述了,不会很难。

二、节点

这里需要详细的说明,首先介绍每个节点所包含的具体信息。

我假设模型如下:每个节点包含一张view表格,表格的每一项为其他节点的两项基本信息,包括该节点的ID(地址)和hopcount(传播次数)。由于设定的网络模型内只包含4个节点,所以view表的长度我设定为2,即每个节点的view表内最多只能包括两个节点的基本信息。

由于每个节点在网络中的任务有两项:发送信息给其他节点、接受其他节点发送给自己的信息。所以我把发送和接受的流程图对照这进行描述,如流程图2。

gossip protocol - Crosslandy - Crosslandy

 流程图2

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:23775次
    • 积分:364
    • 等级:
    • 排名:千里之外
    • 原创:5篇
    • 转载:40篇
    • 译文:1篇
    • 评论:2条
    文章分类