博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Gossip 协议
阅读量:4042 次
发布时间:2019-05-24

本文共 917 字,大约阅读时间需要 3 分钟。

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

转载地址:http://vemdi.baihongyu.com/

你可能感兴趣的文章
驱动TFT要SDRAM做为显示缓存
查看>>
使用file查看可执行文件的平台性,x86 or arm ?
查看>>
qt5 everywhere 编译summary
查看>>
qt5 everywhere编译完成后,找不到qmake
查看>>
qt 创建异形窗体
查看>>
可重入函数与不可重入函数
查看>>
简单Linux C线程池
查看>>
内存池
查看>>
输入设备节点自动生成
查看>>
GNU hello代码分析
查看>>
Qt继电器控制板代码
查看>>
wpa_supplicant控制脚本
查看>>
gstreamer相关工具集合
查看>>
RS232 四入四出模块控制代码
查看>>
gstreamer插件之 videotestsrc
查看>>
linux 驱动开发 头文件
查看>>
/etc/resolv.conf
查看>>
container_of()传入结构体中的成员,返回该结构体的首地址
查看>>
linux sfdisk partition
查看>>
ipconfig,ifconfig,iwconfig
查看>>