一介闲人
一介闲人
在微服务架构的世界里,服务的注册与发现以及配置管理是至关重要的环节。今天,我们就来探讨一下如何在 Spring Cloud 中简单地使用 Consul 来实现这两个关键功能。
Consul 是一个具备服务发现、配置管理和分布式协调等功能的工具。它提供了一个高可用、分布式的系统,让我们能够方便地管理微服务架构中的各种服务和配置。
以window环境安装
https://developer.hashicorp.com/consul/install
解压到安装目录即可得到consul.exe可执行文件
管理员打开cmd命令执行器
进去Consul安装目录
执行consul -v或者consul --version命令,响应Consul版本信息表示成功
C:\dev\consul>consul -v
Consul v1.17.1
Revision 9bcafa24
Build Date 2023-12-12T19:55:27Z
Protocol 2 spoken by default, understands 2 to 3 (agent will automatically use protocol >2 when speaking to compatible agents)
前台运行,窗口关闭就结束,配置数据会丢失
consul agent -dev
创建bat执行文件start.bat,将服务注册成window后台服务,设置开启自启并设置持久化数据到文件中
@echo.服务启动......
@echo off
@sc create Consul binpath="C:\dev\consul\consul.exe agent -server -ui -bind=127.0.0.1 -client=0.0.0.0 -bootstrap-expect 1 -data-dir C:\dev\consul\data "
@net start Consul
@sc config Consul start = AUTO
@echo.Consul start is OK........success
@pause
双击执行bat文件即可启动
http://http://localhost:8500/
首先,在您的 Spring Cloud 项目的 pom.xml
文件中添加相关依赖:
<!-- 引入springcloud consul 服务注册 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-discovery</artifactId>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- 引入springcloud consul 服务配置 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
在 application.properties
或 application.yml
中进行 Consul 的配置:
spring:
application:
name: cloud-payment-service
cloud:
consul:
host: localhost
port: 8500
discovery:
service-name: ${spring.application.name}
config:
profile-separator: "-" #m默认是英文‘,’ 这里修改成‘-’
format: YAML
watch:
wait-time: 55 #配置生效等待时间,单位秒,默认55秒
在您的服务启动类上添加 @EnableDiscoveryClient
注解,这样服务启动时就会自动注册到 Consul 中。
@SpringBootApplication
@EnableDiscoveryClient
@RefreshScope
public class Main {
public static void main(String[] args) {
SpringApplication.run(Main.class, args);
}
}
Consul 不仅可以用于服务注册,还能进行配置管理。我们可以将配置信息存储在 Consul 的键值对中,然后在服务中获取。
例如,我们可以在 Consul 中设置一个名为 consul.info
的键,值为一些配置信息。
在服务中通过 @Value
注解来获取这些配置:
@Value("${consul.info}")
private String myConfig;
或者
@RequestMapping("/consul/get/info")
public String getInfoByConsul(@Value("${consul.info}") String info) {
return "info: "+ info + "\t"
}
当有新的服务加入或旧的服务下线时,Consul 能够实时感知并通知其他相关服务,实现了服务的动态发现。
所有服务的配置都集中在 Consul 中,方便进行统一管理和更新,避免了配置不一致的问题。
Consul 自身具备高可用性,保证了服务注册和配置管理的稳定性。
通过以上简单的步骤,我们就在 Spring Cloud 中成功地使用 Consul 实现了服务注册与配置管理。这为我们构建强大、灵活的微服务架构提供了有力的支持,让我们在应对复杂业务需求时更加得心应手。
评论