专栏首页DBA随笔简单介绍下consul底层的通信协议Gossip

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

简单介绍下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的请求,这会造成消息的冗余,提高节点处理信息的压力。

文章分享自微信公众号:
DBA随笔

本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!

如有侵权,请联系 cloudcommunity@tencent.com 删除。
登录 后参与评论
0 条评论

相关文章

  • consul配置与实战

    上一篇提到,项目用的分布式服务发现与注册组件是consul,这篇文章主要来讲下consul组件在项目中的应用以及相关介绍。本文以官方文档为主要参考consul文...

    aoho求索
  • .Net微服务实践(五)[服务发现]:Consul介绍和环境搭建

    在上篇.Net微服务实践(四)[网关]:Ocelot限流熔断、缓存以及负载均衡中介绍Ocelot的限流、熔断、缓存、负载均衡以及其他一些特性,Ocelot的基本...

    我思故我在
  • 搭建consul 集群

    上图是官网提供的一个事例系统图,图中的Server是consul服务端高可用集群,Client是consul客户端。consul客户端不保存数据,客户端将接收到...

    张善友
  • consul分布式集群搭建

    上图是官网提供的一个事例系统图,图中的Server是consul服务端高可用集群,Client是consul客户端。consul客户端不保存数据,客户端将接收到...

    1850810
  • 服务发现之consul的介绍、部署和使用

    微服务的框架体系中,服务发现是不能不提的一个模块。我相信了解或者熟悉微服务的童鞋应该都知道它的重要性。这里我只是简单的提一下,毕竟这不是我们的重点。我们看下面的...

    sunsky
  • consul安全加固

    最近的工作需要对默认安装的consul集群进行安全加固,这里将安全加固的步骤记录下来。

    jeremyxu
  • 服务发现之 Etcd VS Consul

    在分布式微服务架构中,一个应用可能由一组职责单一化的服务组成。这时候就需要一个注册服务的机制,注册某个服务或者某个节点是可用的,还需要一个发现服务的机制来找到哪...

    spilledyear
  • Spring Cloud Consul入门 1. Consul介绍2. 安装3. 启动Consul4. 使用SpringCloud Consul组件

    Consul是一套开源的分布式服务发现和配置管理系统,支持多数据中心分布式高可用。Consul是HashiCorp( Vagrant的创建者)开发的一个服务发现...

    mantou
  • Golang 语言微服务的服务发现组件 Consul 的系统架构介绍

    在上篇文章「Golang 语言微服务的服务注册与发现组件 Consul」中,我们已经介绍服务注册与发现是什么,Golang 语言微服务架构为什么需要使用服务注册...

    frank.
  • serf 中去中心化系统的原理和实现

    原文:https://www.infoq.cn/article/principle-and-impleme-of-de-centering-system-in-...

    sunsky
  • compute node ha 主流开源实现

    nova evacuate和热迁移很像。都是想实例从一个节点转移到另外一个节点。区别主要是热迁移在正常状态下进行的,疏散时在异常状态下进行的。用一个形象的比如就...

    后端云
  • Spring Cloud Consul 之Greenwich版本全攻略

    Consul是HashiCorp公司推出的开源软件,使用GO语言编写,提供了分布式系统的服务注册和发现、配置等功能,这些功能中的每一个都可以根据需要单独使用,也...

    方志朋
  • 服务注册发现技术对比

    他们4个只有 Eureka 是 AP 的,Eureka 在数据不一致的情况下也可以使用,只要数据最终一致即可。

    dys
  • Consul 架构(译)

    如上图所示,Consul先天支持多数据中心应用:multiple datacenters 。

    WindWant
  • 分布式中几种服务注册与发现组件的原理与比较

    在云计算和容器化技术发展火热的当下,对于微服务架构,服务注册与发现组件是必不可少的。在传统的服务架构中,服务的规模处于运维人员的可控范围内。当部署服务的多个节点...

    芋道源码
  • Raft算法和Gossip协议

    raft 集群中的每个节点都可以根据集群运行的情况在三种状态间切换:follower, candidate 与 leader。leader 向 follower...

    后端云
  • Consul 架构简介

    图片上 datacenter 分成上下两个部分, 但是这两个部分又不是完全隔离的。他们之间通过 WAN GOSSIP 进行报文交互。

    王小明_HIT
  • 分布式中几种服务注册与发现组件的原理与比较

    在云计算和容器化技术发展火热的当下,对于微服务架构,服务注册与发现组件是必不可少的。在传统的服务架构中,服务的规模处于运维人员的可控范围内。当部署服务的多个节点...

    aoho求索
  • Consul 简介

    1、服务发现:一个客户端提供自己的服务,例如api服务,或者mysql服务,另一个客户端就可以利用Consul通过DNS或者http来发现这些服务的提供者。

    WindWant

扫码关注云+社区

领取腾讯云代金券