简单介绍下consul底层的通信协议Gossip

2019-12-18 16:34:06 浏览数 (2)

简单介绍下consul底层的通信协议Gossip

明天早上还有个维护,今天需要早点休息,简单写写consul内部的通讯协议吧。

Consul是一个微服务发现的解决方案,它的主要特点是:服务发现、健康检查、键值存储、安全服务通信、多数据中心。关于consul的细节我们这里不多说,大家想了解的可以看看consul相关的博客,这里推荐几个:

https://www.cnblogs.com/cuishuai/p/8194345.html

http://www.liangxiansen.cn/2017/04/06/consul/

今天我们主要说说consul底层的通讯协议gossip协议,gossip协议也称之为流行病协议,它的信息传播行为类似流行病,或者森林的大火蔓延一样,一个接着一个,最终导致全局都收到某一个信息。

在gossip协议的网络中,有很多节点交叉分布,当其中的一个节点收到某条信息的时候,它会随机选择周围的几个节点去通知这个信息,收到信息的节点也会接着重复这个过程,直到网络中所有的节点都收到这条信息,才算信息同步完成。

从我们的描述中不难看出来,在某个时刻下,网络节点中的信息可能是不对称的,gossip协议不是一个强一致性的协议,而是最终一致性的协议,理解了这一层,我们去看consul的日志的时候,就能有一些端倪了,因为consul服务网络在运行的过程中,如果有新的服务注册进来,那么其他的节点会收到某个服务或者节点加入的信息。下面的图比较形象的展示了consul服务网络中节点通讯的方式:

Gossip协议的优点和缺点分别如下:

优点:

扩展性好,加入网络方便

容错性好,某个节点离开网络,不会影响整体的消息传播

去中心化,Gossip协议的网络中,不存在中心节点的概念,每个节点都可以成为消息的第一个传播者,只要网络可达,信息就能散播到全网。

一致性收敛:这种一传十、十传百的消息传递机制,能够保证消息快速收敛,并保证最终一致性。

缺点:

消息延迟:这个是由它的特性决定的,消息的扩散需要时间,这中间各个节点的消息是不一致的。

消息冗余:A节点告知B的信息,B可能会反过来告知A,这个时候A本身已经包含这个消息,却还要处理B的请求,这会造成消息的冗余,提高节点处理信息的压力。

0 人点赞