欢迎访问宙启技术站
智能推送

SpringCloud学习系列之五-----配置中心(Config)和消息总线(Bus)完美使用版

发布时间:2023-05-15 21:45:30

在微服务系统中,各个服务之间通常会共享一些配置信息,例如数据库连接信息、服务器地址等。而配置中心(Config)就是用来统一管理这些配置信息的工具,可以帮助我们轻松实现配置统一管理、动态刷新等功能。

一、使用Config

在SpringCloud中,我们可以通过SpringCloud Config来实现配置中心的功能。它提供了一个简单易用的配置管理界面,可以通过git、svn、file等多种配置源获取配置信息。

1、创建配置中心

首先,我们需要创建一个配置中心。可以通过创建一个普通的SpringBoot应用来实现,然后引入以下配置:

(1)引入依赖:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-config</artifactId>
</dependency>

(2)添加配置:

spring.application.name=config-server
server.port=8888
spring.cloud.config.server.git.uri=git@github.com:xxx/configs.git
spring.cloud.config.server.git.search-paths=*
spring.cloud.config.server.git.username=xxx
spring.cloud.config.server.git.password=xxx

git.uri指向配置信息存储的仓库地址,此处我们使用的是git仓库。

search-paths指定了配置文件所在的路径,*表示配置仓库中所有的配置文件都会被读取。

git.username和git.password用于对仓库的访问进行身份验证,如果仓库是公共的,则不需要填写。

2、创建客户端

然后,在需要访问配置信息的微服务中引入以下依赖:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-config</artifactId>
</dependency>

并在配置文件中添加相关配置:

spring.application.name=service-a
server.port=8081
spring.cloud.config.uri=http://localhost:8888

cloud.config.uri指向配置中心的地址,此处我们使用的是本地地址,正式环境下需要修改为配置中心实际部署的地址。

完成后,启动配置中心和微服务,就可以通过访问http://localhost:8888/service-a/default来获取service-a的默认配置信息了。

二、使用Bus

如果使用Config来实现配置管理,每次修改配置都需要手动重启微服务才能生效,效率非常低。而SpringCloud Bus就是用来解决这个问题的工具。

1、创建消息总线

同样的,我们可以通过创建一个SpringBoot应用来实现消息总线的功能。需要引入以下依赖:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>

这里我们使用了AMQP(Advanced Message Queuing Protocol)作为消息传输协议。

2、配置消息总线

在消息总线的配置文件中,需要添加以下配置:

spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest

这里需要注意的是,如果使用了RabbitMQ作为消息总线,需要安装并启动RabbitMQ。

3、使用消息总线

在微服务的配置文件中,需要添加以下配置:

spring.cloud.bus.enabled=true
management.endpoints.web.exposure.include=bus-refresh

这里的bus-refresh表示可以通过访问/actuator/bus-refresh这个端点触发配置的刷新。

然后,在需要刷新配置的微服务中执行以下命令:

curl -X POST http://localhost:8080/actuator/bus-refresh

此时,仅执行这个命令是不会生效的,因为需要在服务之间传递的消息。我们可以通过在配置中心或其他微服务中执行相同的命令来触发消息传递,从而实现配置的动态刷新功能。

总结

SpringCloud Config和Bus的组合使用可以实现配置的统一管理和动态刷新,有效提升了开发效率。需要注意的是,在使用Bus时要依赖于消息队列,在生产环境中需要考虑消息队列的高可用和负载均衡等问题。