1. Consul 介绍
服务注册/服务发现,除了Nacos还有一个比较流行的组件,Consul
主要用于服务发现/配置管理和分布式系统的健康检查
- 服务注册/发现:服务在启动时项Consul注册,并在需要时,向Consul查询其他服务的地址和状态
- 健康检查:consul提供了健康检查机制,确保只有健康的服务实例对外提供服务,防止服务转发到故障的服务
- 配置管理:Consul提供了一个key/value存储系统,用于存储配置数据和其他需要共享的信息
- 服务分段:Consul支持服务分段,允许创建隔离的环境
Consul和Nacos的区别

2. Consul安装

启动
.\consul.exe agent -dev

3. 服务注册/服务发现
引入依赖
Consul ⽀持健康检查,以确保只有健康的服务实例可被发现,Consul使⽤了actuator提供服务的健康检 查,所以除了consul之外,还需要引⼊actuator的依赖
添加配置

添加注解


4. 配置服务和刷新
Consul除了服务注册和发现之外,还可以作为配置中心,服务的配置信息存储在Consul中,服务从Consul获取配置信息
Consul提供了一个简直存储服务配置和其他元数据,是Spring Cloud Config的替代方案,在特殊的"bootstrap"阶段,配置加载到Spring环境中,默认情况i下,配置存储在/config文件中
4.1 初始化配置
如果项目由很多个环境,config目录下可以创建对应的多环境目录
- config/product-service/:对应使用 config 前缀的、名称为 product-service 的应用。也就是说,当某个服务的 spring.application.name 为 product-service 时,Consul 会默认从 config/product-service/ 这个路径下读取它的配置信息。
- config/product-service,dev/:对应 product-service 应用在 dev(开发)环境下的配置目录。当服务启动时指定了 dev 环境,Consul 会优先从该目录加载开发环境专属的配置,例如数据库连接地址、调试开关等。
- config/product-service,prod/:对应 product-service 应用在 prod(生产)环境下的配置目录。生产环境通常包含更严格的参数,如连接池大小、超时时间、日志级别等,这些配置与开发环境相互隔离,避免误用。


4.2 项目配置
引入依赖
配置 bootstrap





4.5 动态刷新


Consul的动态刷新功能使得配置变更⽆需重启应⽤程序,⼤⼤提⾼了运维效率和系统的灵活性
4.6 其他配置
config/application配置
默认情况下,配置的路径前缀是/config,不同的aopplicayion和profile对应不同的配置路径
config/product-service,dev/
config/product-service/
config/application,dev/
config/application/
这个列表从上倒下分别对应的配置优先级从高到低,优先级高的配置项会覆盖低优先级同样配置项
bootstrap.yml的更多配置

5. Consul 配置持久化
当重启Consul后,存储的数据会消失,与启动命令有关
consul agent options

可以指定数据存储目录
consul agent -server -bootstrap-expect 1 -ui -data dir=D:\soft\consul_data\mydata