xinrong2019 / xinrong2019.github.io

My Blog
https://xinrong2019.github.io
1 stars 1 forks source link

20190515之Consul中的Gossip协议 #15

Open xinrong2019 opened 5 years ago

xinrong2019 commented 5 years ago

背景/动机

Consul注册中心的核心功能是基于Gossip协议实现的,所以这个是重点,搞清楚是什么为什么,对于开发人员还是有必要的。啃完一个,对于其他使用Gossip协议的软件和类似的协议都能有一个更清晰的认识。

Consul中的Gossip协议

Consul通过gossip协议管理成员并向集群广播。Consul使用的gossip协议是Serf库支持的。对于开发人员,了解此库原理非常有用。

Serf使用的Gossip协议是基于"SWIM: Scalable Weakly-consistent Infection-style Process Group Membership Protocol",并进行了一些小修改。

Consul使用两个不同的Gossip pool。分别是WAN池和LAN池。

WAN池:全局唯一,包含所有数据中心的所有服务。

LAN池:每个数据中心都有一个LAN池,包含该数据中心的所有Client和Server。