Spring Cloud Consul

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

相关推荐
重生之我是Java开发战士5 小时前
【Spring Cloud】Eureka服务注册发现与LoadBalancer负载均衡
spring cloud·eureka·负载均衡
谢亮_vipxieliang6 小时前
ValidX vs Google Guava Preconditions:验证 vs 断言
java·spring boot·后端·spring cloud·hibernate·guava
夏天拐跑了西瓜1 天前
Spring Cloud 微服务实战(八):Hystrix熔断降级——从服务雪崩到断路器模式
spring cloud·hystrix·微服务
学习星球1 天前
编辑距离——二维 DP 的“最小操作“艺术
c++·leetcode·java-consul
重生之我是Java开发战士2 天前
【Spring Cloud】认识微服务与工程搭建
spring·spring cloud·微服务
墨着染霜华3 天前
SpringCloud Gateway线上Nginx代理后自定义下划线请求头丢失(app_name/app_version获取不到)完美解决
nginx·spring cloud·gateway
Rain的Java大神之路3 天前
高并发下的热点账户余额扣减:Redis+Lua脚本实现无锁记账
java·spring boot·redis·后端·spring cloud·缓存·lua
YOU OU4 天前
优雅实现远程调用-OpenFeign
spring cloud
YOU OU4 天前
Spring Cloud概述
后端·spring·spring cloud