Consul Gossip Protocol

Gossip Protocol

Consul使用gossip协议来管理成员资格并向群集广播消息。 所有这些都是通过使用Serf库提供的。 Serf使用的gossip协议基于“SWIM:可扩展的弱一致感染风格的流程组成员协议”,并进行了一些小的修改。 这里有关于Serf协议的更多细节。

Gossip in Consul(Consul中的Gossip)

Consul使用两个不同的 gossip池。我们将每个池分别称为LAN或WAN池。每个数据中心Consul都有一个LAN gossip池,包含数据中心的所有成员,包括客户端和服务器。 LAN池用于一些目的。成员资格信息允许客户端自动发现服务器,减少所需的配置量。分布式故障检测允许整个集群共享故障检测工作,而不是集中在少数服务器上。最后,gossip池允许为领导者选举等事件提供可靠和快速的事件广播。

WAN池是全球唯一的,因为无论数据中心如何,所有服务器都应该参与WAN池。 WAN池提供的成员资格信息允许服务器执行跨数据中心请求。集成故障检测允许Consul优雅地处理丢失连接的整个数据中心,或者只处理远程数据中心中的单个服务器。

所有这些功能都是通过利用Serf提供的。它用作嵌入式库以提供这些功能。从用户的角度来看,这并不重要,因为抽象应该由Consul掩盖。但是,作为开发人员,了解如何利用此库非常有用。
 

Lifeguard Enhancements(救生员增强功能)

SWIM假设本地节点是健康的,因为可以对数据包进行软实时处理。 但是,在本地节点遇到CPU或网络耗尽的情况下,可能会违反此假设。 结果是,serfHealth检查状态偶尔可以翻转,导致错误的监视警报,增加遥测噪声,并简单地导致整个集群浪费CPU和网络资源来诊断可能不存在的故障。

Lifeguard通过对SWIM的新颖增强完全解决了这个问题。

有关Lifeguard的更多详细信息,请参阅使用Lifeguard博客文章查看Making Gossip More Robust,该文章提供了HashiCorp Research救生员的高级概述:SWIM-ing with Situational Awareness。 Serf gossip协议指南还提供了有关gossip协议和Lifeguard的一些较低级别的详细信息。

猜你喜欢

转载自blog.csdn.net/longgeqiaojie304/article/details/85233339