Consul 用于实现分布式系统的服务注册与配置,与其它方案相比,Consul 更 “一站式”,内置了服务注册与发现框架、分布一致性协议实现、健康检查、Key/Value 存储、多数据中心方案,不需要依赖其他工具,使用起来也很方便。
Consul 使用 Go 语言,具有天然可移植性,仅包含一个可执行文件,易于部署,可与 Docker 等轻量级容器无缝配合
基于 Raft 算法
服务发现
支持 http 和 dns 协议接口
健康检查
支持HTTP、TCP、Docker、Shell脚本定制化
Key/Value 存储
多数据中心
官方提供 web 管理页面
Consul 内部分为:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z7mZtK38-1670555650598)(img/Consul 注册中心 角色.jpeg)]](https://img.pic99.top/cnyincai/202403/ed213cfe1591ef2.png)
当 Producer 启动时,会将自己的 IP/Host 等信息通过请求告知 Consul, Consul 接收到 Producer 的注册信息后,每10s(默认)会向 Producer 发送一个健康检查的请求,检验 Producer 是否健康
当 Consumer 请求 Producer 时,会先从 Consul 中 拿到存储 Producer 服务的临时表 (temp table),从中任选一个 Producer 的 IP 和 Port,然后根据这个 IP 和 Port,发送请求;temp table 表只包含了健康检查的信息,并每10s(默认)更新
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IhMdfO99-1670555650600)(img/consul 工作原理.jpeg)]](https://img.pic99.top/cnyincai/202403/5268750864b4980.png)
下载地址:https://www.consul.io/downloads
# -dev 表示开发模式运行,-server 表示服务模式运行
consul agent -dev -client=0.0.0.0
consul agent -dev -client=0.0.0.0
pause
org.springframework.cloud spring-cloud-starter-consul-discovery
spring:application:name: cloud-paymentcloud:consul:host: localhostport: 8500discovery:service-name: ${spring.application.name}
@EnableDiscoveryClient
@SpringBootApplication
public class PaymentApplication06 {public static void main(String[] args) {SpringApplication.run(PaymentApplication06.class, args);}
}