在分布式中,首先需要解决的便是多个节点间数据同步的问题,今天我们就来介绍一种分布式通信协议——Gossip协议。
Gossip协议,又称“八卦”协议,就是模拟人类传播八卦的方式而产生的。简单来说,进行谣言的传播,首先需要有种子节点,种子节点每秒都会随机向其他节点发送自己所拥有的节点列表以及需要传播的消息。任何新加入的节点,通过这样的传播便很快地被全网所知。在最开始,并不需要将信息传递给所有的节点,但随着时间增长,在“最终”的某一时刻,全网会得到相同的信息。
Gossip的两个节点A、B之间存在三种通信方式:
- Push:B节点将数据(key,value,version)及对应的版本号推送给A节点,A节点更新B中比自己新的数据
- Pull:A仅将数据key,version推送给B,B将本地比A新的数据(Key,value,version)推送给A,A更新本地
- Push-pull:在pull的基础上,A再将本地比B新的数据推送给B,B更新本地。