springcloud中config和bus的使用

springcloud中config和bus的使用

一、简介
在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件。市面上开源的配置中心有很多,BAT每家都出过,360的QConf、淘宝的diamond、百度的disconf都是解决这类问题。国外也有很多开源的配置中心Apache的Apache Commons Configuration、owner、cfg4j等等。在Spring Cloud中,有分布式配置中心组件spring cloud config ,它支持配置服务放在配置服务的内存中(即本地),也支持放在远程Git仓库中。在spring cloud config 组件中,分两个角色,一是config server,二是config client。

一个配置中心提供的核心功能
提供服务端和客户端支持
集中管理各环境的配置文件
配置文件修改之后,可以快速的生效
可以进行版本管理
支持大的并发查询
支持各种语言
Spring Cloud Config可以完美的支持以上所有的需求。

Spring Cloud Config项目是一个解决分布式系统的配置管理方案。它包含了Client和Server两个部分,server提供配置文件的存储、以接口的形式将配置文件的内容提供出去,client通过接口获取数据、并依据此数据初始化自己的应用。Spring cloud使用git或svn存放配置文件,默认情况下使用git,我们先以git为例做一套示例。

构建Config Server

新建一个模块,取名为config-server。
pom.xml文件依赖如下:

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

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

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

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

        <!--表示为web工程-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!--暴露各种指标  貌似是必须的  -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

</dependencies>

在启动类中开启ConfigServer:

@SpringBootApplication
@EnableConfigServer
public class ConfigServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(ConfigServerApplication.class, args);
    }

}

配置文件(application.properties):

server.port=7010
spring.cloud.config.server.default-application-name=config-server

# 配置git仓库地址
spring.cloud.config.server.git.uri=https://github.com/s***w*/myspringcloudconfig

#以下部分可以不需要配
# 配置仓库路径
spring.cloud.config.server.git.search-paths=myconfigpath
# 配置仓库的分支
spring.cloud.config.label=master
# 访问git仓库的用户名
spring.cloud.config.server.git.username=xxxxoooo
# 访问git仓库的用户密码 如果Git仓库为公开仓库,可以不填写用户名和密码,如果是私有仓库需要填写
spring.cloud.config.server.git.password=xxxxoooo
到gitee中新建一个仓库(公共的)在这里插入图片描述

把eureka-student模块中的application.properties文件抽取出来,
改名字为student-dev.properties
上传到gitee上,步骤如下:
在这里插入图片描述在这里插入图片描述
给eureka-student模块添加依赖:

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

其配置文件bootstrap.properties:(名字必须是bootstrap后缀要与上传的一致):

spring.application.name=student-dev
#远程仓库的分支
spring.cloud.config.label=master
#dev 开发环境配置文件 |  test 测试环境  |  pro 正式环境
#和git里的文件名对应
spring.cloud.config.profile=dev
#指明配置服务中心的网址
spring.cloud.config.uri= http://localhost:8066/

分别启动eureka-server,config-server,eureka-student
访问 http://localhost:8066/student-dev.properties
在这里插入图片描述
访问 http://localhost:8082/students
在这里插入图片描述

如果要修改gitee中的配置文件 但不需要重新启动服务,就要使用springcloud中的bus组件

首先给gie中的配置文件加上一个配置:

spring.rabbitmq.host=xxx.xxx.xxx.xxx    #rabbitmq的IP地址

在这里插入图片描述
在config-server的pom.xml中添加依赖:

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

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

为config-server的application.properties中填写配置文件(连接rabbitmq的):

spring.rabbitmq.host=xxx.xxx.xxx.xxx  #ip地址
management.endpoints.web.exposure.include=bus-refresh

再为在eureka-student的pom.xml中添加依赖:

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

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

<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-stream-binder-rabbit</artifactId>
</dependency>

修改gitee中的配置文件:
在这里插入图片描述
访问http://127.0.0.1:8066/actuator/bus-refresh刷新(必须以post方式提交):
在这里插入图片描述
再回过来访问http://localhost:8082/students。就访问不到数据了…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值