Spring Cloud Consul

一、Consul介绍

Consul概述:

Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置。与其他分布式服务注册与发现的方案,Consul 的方案更"一站式",内置了服务注册与发现框架、分布一致性协议实现、健康检查、Key/Value 存储、多数据中心方案,不再需要依赖其他工具(比如 ZooKeeper 等)。使用起来也较 为简单。Consul 使用 Go 语言编写,因此具有天然可移植性(支持Linux、windows和Mac OS X);安装包仅包含一个可执行文件,方便部署,与 Docker 等轻量级容器可无缝配合。

复制代码
 Spring Cloud Consul 项目是针对 Consul 的服务治理实现。Consul 是一个分布式高可用的系统,它包含多个组件,但是作为一个整体,在微服务架构中,为我们的基础设施提供服务发现和服务配置的工具。

Consul功能:

Consul角色:

Server :服务端,保存配置信息,高可用集群,在局域网与本地客户端通讯,通过广域网与其他数据中心通讯,每个数据中心的Server数量推荐3个或者5个。
Client:客户端,无状态,将HTTP和DNS接口请求转发给局域网内的服务端集群。

Consul优势:

使用 Raft 算法来保证一致性, Consul 保持了 CAP 中的 CP,保持了强一致性和分区容错性。

支持多数据中心。

支持健康检查。

使用go语言开发,启动速度和运行速度快。

二、Consul的安装和使用

打开Consul官网 https://developer.hashicorp.com/consul 根据不同的操作系统选择最新的 Consul 版本。我们以 Windows 64 操作系统为例。

下载下来是一个压缩包,解压是一个 consul.exe 的执行文件。

cd 到对应的目录下,使用 cmd 启动 Consul。

bash 复制代码
--常规启动
consul agent -dev 

启动成功之后访问:localhost:8500,就可以看到Consul的管理界面。

Consul 管理界面菜单介绍

Consul 的 Web 管理界面有一些菜单,我们做一下介绍:

Services,管理界面的默认页面,用来展示注册到 Consul 的服务,启动后默认会有一个 consul 服务,也就是它本身。

Nodes,在 Services 界面双击服务名就会来到 Services 对于的 Nodes 界面,Services 是按照服务的抽象来展示的,Nodes 展示的是此服务的具体节点信息。比如启动了两个订单服务实例,Services 界面会出现一个订单服务,Nodes 界面会展示两个订单服务的节点。

Key/Value ,如果有用到 Key/Value 存储,可以在界面进行配置、查询。

ACL,全称 Access Control List,为访问控制列表的展示信息。

Intentions,可以在页面配置请求权限。

三、Consul的调用过程

Consul的调用过程:

1、当 Producer 启动的时候,会向 Consul 发送一个 post 请求,告诉 Consul 自己的 IP 和 Port;

2、Consul 接收到 Producer 的注册后,每隔 10s(默认)会向 Producer 发送一个健康检查的请求,检验 Producer 是否健康;

3、当 Consumer 发送 GET 方式请求 /api/address 到 Producer 时,会先从 Consul 中拿到一个存储服务 IP 和 Port 的临时表,从表中拿到 Producer 的 IP 和 Port 后再发送 GET 方式请求 /api/address;

4、该临时表每隔 10s 会更新,只包含有通过了健康检查的 Producer。

相关推荐
爱吃山竹的大肚肚19 小时前
Spring Boot 与 Apache POI 实现复杂嵌套结构 Excel 导出
java·spring boot·后端·spring·spring cloud·excel
咖啡不甜不好喝1 天前
SpringCloud之OpenFeign
spring cloud·openfeign
黄俊懿2 天前
【深入理解SpringCloud微服务】Spring-Security作用与原理解析
java·后端·安全·spring·spring cloud·微服务·架构师
叫致寒吧2 天前
Dockerfile
java·spring cloud·eureka
悟空码字2 天前
从零到一搭建SpringCloud微服务,一场代码世界的“分家”大戏
java·后端·spring cloud
黄俊懿2 天前
【深入理解SpringCloud微服务】Gateway源码解析
java·后端·spring·spring cloud·微服务·gateway·架构师
刘个Java2 天前
手搓遥控器通过上云api执行航线
java·redis·spring cloud·docker
没有bug.的程序员2 天前
Ribbon vs LoadBalancer 深度解析
jvm·后端·spring cloud·微服务·ribbon·架构·gc调优
没有bug.的程序员2 天前
Nacos vs Eureka 服务发现深度对比
jvm·微服务·云原生·容器·eureka·服务发现