赞
踩
现有携程的apollo(阿波罗)、蚂蚁金额的disconf、spring cloud config
对于一些简单的项目来说,我们一般都是直接把相关配置放在单独的配置文件中,以 properties 或者 yml 的格式出现,更省事儿的方式是直接放到 application.properties 或 application.yml 中。但是这样的方式有个明显的问题,那就是,当修改了配置之后,必须重启服务,否则配置无法生效。
Spring Cloud Config 是把应用原本放在本地文件的配置放到github,从而提供更好的管理、发布能力。
1.根据客户端传递过来的应用、环境、版本信息来找到对应的Git Repository
2.在拉取到远程仓库的数据之后,切换到指定的节点
3.指定ApplicationContext名字为客户端传过来的应用名字,指定胚子文件路径为本地git目录
4.创建本地git目录,结合profile来加载指定的配置文件信息
5.从配置文件中获取配置,返回给客户端。
怎么解决修改了配置之后,必须重启服务,否则配置无法生效的问题?
通过eureka、spring cloud config、config-client、gitee实现
2.1 eureka
(1)配置文件
spring.application.name=spring-cloud-config-eureka-server
server.port=8761
#fase表示不向注册中心注册自己
eureka.client.register-with-eureka=false
#false表示自己就是注册中心,我的职责就是维护实例,并不需要去检索服务
eureka.client.fetch-registry=false
(2)启动类
添加@EnableEurekaServer注解
2.2 spring cloud config server
//添加config server依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
//添加eureka client依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
1.启动类
@EnableEurekaClient
@EnableConfigServer
2.配置
//注入到注册中心
spring.application.name=spring-cloud-config
server.port=8090
eureka.client.service-url.defaultZone=http://localhost:8761/eureka
#git
spring.cloud.config.server.git.uri=***************************
spring.cloud.config.server.git.username=*************
spring.cloud.config.server.git.password=**************
2.3 config client
//config client
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
//eureka client
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
创建bootstrap.properties文件(优先加载)
//这个application.name文件跟git上一致
spring.application.name=config-eureka-client
spring.cloud.config.profile=dev
spring.cloud.config.discovery.enabled=true
spring.cloud.config.discovery.service-id=spring-cloud-config
//注入到注册中心
eureka.client.service-url.defaultZone=http://localhost:8761/eureka
2.4 gitee
在创建一个config-eureka-client.properties文件
作用就是在加载dev或者prod时,会自动合并config-eureka-client.properties文件的内容整合在一起
采用bus结合rabbitmq
1.eureka不变
2.config server
依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bus-amqp</artifactId> </dependency>
*下面这段配置需要注意,我被整了半天才找到原因,难受~~~~~*
1.x版本配置
#mq配置
spring.rabbitmq.host=******
spring.rabbitmq.port=5672
spring.rabbitmq.username=admin
spring.rabbitmq.password=123456
#bus
management.security.enabled=false
————————————————————————————
2.x版本配置
#mq配置
spring.rabbitmq.host=******
spring.rabbitmq.port=5672
spring.rabbitmq.username=admin
spring.rabbitmq.password=123456
#bus
spring.cloud.bus.refresh.enabled=true
management.endpoints.web.exposure.include=bus-refresh
请求刷新地址:1.x版本为:http://ip:端口/bus/refresh(如:http://localhost:8040/bus/refresh),2.0以后为:http://ip:端口/actuator/bus-refresh(如:http://localhost:8040/actuator/bus-refresh),特别注意:两个都是POST请求
3.config clent
依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-config</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bus-amqp</artifactId> </dependency>
特别注意:client端在获取配置的方法上需要加上 @RefreshScope 注解。
添加rabbitmq配置
spring.rabbitmq.host=*******
spring.rabbitmq.port=5672
spring.rabbitmq.username=admin
spring.rabbitmq.password=123456
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。