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

相关推荐
code_slave(码畜)13 小时前
微服务架构落地:OpenFeign 服务远程调用 + 线程池隔离架构实战 —— 超时控制、重试机制、线程池隔离,防雪崩
spring boot·spring cloud·微服务·云原生·架构·openfeign
Thomas.Sir16 小时前
第30课:分布式事务解决方案 & Seata最终一致性实战
分布式·spring cloud·seata
逃逸线LOF19 小时前
Cloud服务注册中心异同点对比Nacos|Eureka|zookeeper|consul
zookeeper·eureka·consul
霸道流氓气质1 天前
Serverless 架构入门与实战:FaaS/BaaS 模型、Spring Cloud Function 适配与 AI 推理冷启动优化的 Java 全栈指南
spring cloud·架构·serverless
SL_staff1 天前
低代码选型避坑指南:为什么‘能拖拽’不等于‘能交付’?——基于JVS八大引擎的四维交付能力评估框架
java·低代码·spring cloud
从零到一未来可期2 天前
第8集:MCP协议:一个协议让AI接入所有企业系统
spring·spring cloud
Thomas.Sir2 天前
第28课:统一日志收集、ELK搭建 & 线上问题排查体系
elk·spring cloud
来福猿3 天前
Nacos 源码解析:服务注册、配置中心与心跳续约机制
spring·spring cloud
Thomas.Sir3 天前
第27课:SkyWalking全链路追踪实战 & 微服务调用链路分析
spring cloud·微服务·skywalking
野生技术架构师3 天前
Dubbo 还是 Spring Cloud?从架构本质到落地选型
spring cloud·架构·dubbo