Consul 架构简介

简介: Consul 架构简介

Consul 架构简介


Consul 是一款不错的服务注册与发现工具。

Consul 架构图:

image.png


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

单个 datacenter 中, 节点被划分成两种颜色, 红色的 server, 紫色的 client,  他们之间通过 GRPC 进行通信(业务数据), 除此之外, Client 和 Server 之间通过还有一条 LAN Gosssip 进行通信,比如,当 Server 节点增加,或者 down 机后,Client 可以获取对应的 Server列表,去除或者增加 Server 列表。

同一个 Consul agent 程序,启动的时候,通过制定不同的参数来运行 Server 和 Client 模式。也就是说 client 和 server 本质上都是 Client Agent

Server:

  • 参与共识仲裁(raft)
  • 存储机器状态(日志存储)
  • 处理查询
  • 维护周边(LAN/WAN) 节点之间的关系

Client :

  • 负责通过该节点注册到 Consul 微服务的健康检查
  • 将客户端的注册请求和查询转换为 server 的 RPC 请求
  • 维护周边各节点(LAN/WAN) 的关系

Client-Server 模式

架构图:

image.png

目前 Consul 的架构全部升级为 client-Server 模式,服务注册不再向 consul-Server进行注册,而是向服务所在机器的 consul-client 进行注册,通过 Consul-Client 将注册信息同步到 Consul-Server 机器中。


纯 Server 模式


Zookeeper 就是这种模,client server 本质上都是 consul 的 agent, 只是角色不同。

纯 server 模式的架构图:

image.png

纯 server 模式架构的问题

  • 高可用 服务实例注册时配置的 consul-host 是负载均衡地址,服务注册到集群后,由集群中的一个节点负责对该实例进行健康检查。假如有这样的情况,服务A,服务B,都注册到 Service1 ,也就是由 Service1 对 服务A,服务B 进行健康检查,当 Service1 宕机时,这样会导致 服务A,服务B 在注册列表中消失,导致无法无法访问到,但是其实服务本身没有问题。
  • 服务注销 当服务从注册中心注销时,由于是负载均衡的,可能会导致服务注销失败,因为要在Service1 上注销,有可能负载均衡到 Service2 上进行注销,导致注销失败,解决的办法是遍历集群中所有节点进行注销。

Client-Server 架构呢?

  • 高可用 服务实例向本级别 consul-client 进行注册,如果 consul-client 不可用,只影响 consul-client 所在机器的服务实例,不影响另外一台机器上的实例。
  • 服务注销 服务注销值需要在 consul-client 上进行注销,不需要经过负载均衡。

基于 Client-Server架构服务注册时序图

image.png

服务端口

image.png

实现原理

核心原理在于亮点:

  1. 集群信息之间的高效同步机制,保障拓扑变动与控制信号的及时同步
  2. server 集群内日志存储的强一致性。

他们主要基于两个协议来实现

  • Gossip 协议,在集群内消息传递
  • 使用 raft 协议保障日志的一致性。
相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
7月前
|
监控 负载均衡 测试技术
服务网格简介:探索现代微服务架构中的服务网格概念和价值
服务网格简介:探索现代微服务架构中的服务网格概念和价值
114 0
|
8月前
|
存储 人工智能 Serverless
微服务和 Serverless 架构-函数计算 FC 简介及应用场景
微服务和 Serverless 架构-函数计算 FC 简介及应用场景
751 0
微服务和 Serverless 架构-函数计算 FC 简介及应用场景
|
2月前
|
消息中间件 存储 SQL
Flume【基础知识 01】简介 + 基本架构及核心概念 + 架构模式 + Agent内部原理 + 配置格式(一篇即可入门Flume)
【2月更文挑战第18天】Flume【基础知识 01】简介 + 基本架构及核心概念 + 架构模式 + Agent内部原理 + 配置格式(一篇即可入门Flume)
496 0
|
2月前
|
分布式计算 API 数据处理
Flink【基础知识 01】(简介+核心架构+分层API+集群架构+应用场景+特点优势)(一篇即可大概了解flink)
【2月更文挑战第15天】Flink【基础知识 01】(简介+核心架构+分层API+集群架构+应用场景+特点优势)(一篇即可大概了解flink)
70 1
|
7月前
|
网络协议 算法 Java
04SpringCloud 之 Consul 简介
04SpringCloud 之 Consul 简介
22 0
|
3月前
|
边缘计算 Kubernetes 物联网
大规模 IoT 边缘容器集群管理的几种架构 -0- 边缘容器及架构简介
大规模 IoT 边缘容器集群管理的几种架构 -0- 边缘容器及架构简介
|
3月前
|
存储 消息中间件 API
|
9月前
|
存储 负载均衡 应用服务中间件
单机架构与主从架构简介
单机架构与主从架构简介
77 0
|
5月前
|
SQL 关系型数据库 MySQL
Presto【基础 01】简介+架构+数据源+数据模型+特点(一篇即可入门支持到PB字节的分布式SQL查询引擎Presto)
Presto【基础 01】简介+架构+数据源+数据模型+特点(一篇即可入门支持到PB字节的分布式SQL查询引擎Presto)
61 0
|
12月前
|
负载均衡 容灾 网络协议
《云上容灾交付服务白皮书》——2.容灾技术架构——21容灾技术架构简介(上)
《云上容灾交付服务白皮书》——2.容灾技术架构——21容灾技术架构简介(上)
383 0