P2P通信-Gossip传播

Posted 跨链技术践行者

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了P2P通信-Gossip传播相关的知识,希望对你有一定的参考价值。

Gossip是p2p通信时候,广泛使用的一种协议。

具有以下特点:

最终一致性。

明确的收敛速度O(n²)和时间复杂度O(logn)

较强的网络容错性

依据节点工作方式分为两种类型:

Anti-Entropy(反熵):以固定的概率传播所有的数据

Rumor-Mongering(谣言传播):仅传播新到达的数据

Anti-Entropy模式有完全的容错性,但有较大的网络、CPU负载;Rumor-Mongering模式有较小的网络、CPU负载,但必须为数据定义”最新“的边界,并且难以保证完全容错,对失败重启且超过”最新“期限的节点,无法保证最终一致性,或需要引入额外的机制处理不一致性。

协调机制:

    精确协调

        每个数据项维护版本号

    整体协调

        整体维护版本号,依据数据多少进行排序

通信模式:

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 则更新本地

网络负载:

Gossip集群节点中会随机选择几个节点发送消息,其他节点在随机选择几个节点发送,取代了遍历发送。节省了网络负担

身份验证:

每个节点都维护一份证书的映射表,同时自己存有证书的私钥。以节点证书的hash为值,叫做PKI-ID

在节点通信中,验证发送消息时带有证书的hash值和证书,同时对此进行签名,对端节点验证证书的有效性,通过验证签名正确与否来选择相信这个节点。

节点选举:

节点启动15秒后,开始选举,总体规则使用PKI-ID字母顺序,选择靠前的节点。

区块获取:

1.节点定期检查本地区块的序列号,小,则广播获取,收到的数据和已提交区块序列号连续了,就存入账本

2.从排序服务获取区块,主节点从排序服务获取一个区块后,广播给其他节点。

Gossip 的缺陷:

1.消息的延迟 节点只会随机向少数几个节点发送消息,消息最终是通过多个轮次的散播而到达全网的

2.消息冗余 节点会定期随机选择周围节点发送消息,而收到消息的节点也会重复该步骤,因此就不可避免的存在消息重复发送给同一节点的情况,造成了消息的冗余

参考:https://mp.weixin.qq.com/s/r0WNQOJ2g1nHgMl9NtD4Xw

p2p网络概览:https://zhuanlan.zhihu.com/p/34543023

基于memberlist的gossip实现:http://vearne.cc/archives/584

                        https://blog.csdn.net/u010278923/article/details/79698757

memberlist源码使用分析:https://lrita.github.io/2017/05/14/hashicorp-memberlist/#alive

以上是关于P2P通信-Gossip传播的主要内容,如果未能解决你的问题,请参考以下文章

2019.9.1-3 mapreduce ,gossip ,failure detectors,和p2p systems

gossip协议

Gossip数据传播协议

了解 Gossip 协议

Cassandra教程---- 节点间交互(gossip)

Dynamo涉及的算法和协议——p2p架构,一致性hash容错+gossip协议获取集群状态+向量时钟同步数据