SpringCloud Config 分布式配置管理
2020-05-02 16:03:02来源:博客园 阅读 ()
SpringCloud Config 分布式配置管理
配置中心用于统?管理配置, 快速切换各个环境的配置。
常用的配置中心
- 百度开源的disconf https://github.com/knightliao/disconf
- 阿?开源的diamand https://github.com/takeseem/diamond
- springcloud开源的Config http://cloud.spring.io/spring-cloud-config/
- zookeeper
Config是一个分布式的配置管理中心,由config server、config client2部分组成,每个要从config server是获取配置的服务节点都是config client。
使用git仓库存储配置
config默认使?git仓库来存储配置,可以使用公司自己搭建的git服务器,也可以使?github、码云上的私人仓库。
不推荐使用github上的仓库来存储配置,因为在国内使用github访问速度很慢,个人开发者建议使用码云。
新建私人仓库,名称比如config-mall,不同环境的配置有2种方式
(1)文件名指定
配置文件都放在master分支下,比如用户服务的配置:user-service-dev.yml user-service-test user-service-prod.yml
dev是开发环境,test是测试环境,prod是生产环境
(2)分支指定(推荐)
新建分支dev、test
master下放生产环境的配置,dev下放开发环境的配置,test下放测试环境的配置
文件名都是user-service.yml,不需要在文件名中指名环境
使用yml、properties文件都可以
所有eureka client的配置都可以放在git仓库中,比如网关、消费者、提供者,因为要先从eureka server获取config server节点列表,所以要是eureka client
config server
要单独写一个服务作为config server
(1)新建子模块config-server作为服务,创建时只需勾选Spring Cloud Config -> Config Server,Spring Cloud Discovery -> Eureka Discovery Client
也可以手动加依赖:
<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>
如果只有一台config server,挂了系统就不可用,config server肯定要集群,要作为一个服务注册到eureka server上,各服务节点从eureka server上获取config server的节点列表。
(2)引导类上加 @EnableConfigServer、@EnableEurekaClient
@EnableEurekaClient可缺省,因为依赖中有eureka client的依赖时会自动加@EnableEurekaClient
(3)配置文件
server:
port: 9100
spring:
application:
#服务名称
name: config-server
cloud:
config:
server:
git:
#git仓库地址
uri: https://gitee.com/chenhongyong/config-mall.git
#git服务器的账户、密码,我使用的是码云,码云的账号、密码
username: xxxxxxxxxx
password: xxxxxxxxx
#超时时间,单位s,默认5
timeout: 5
#默认分?,默认master。如果config client未指定使用的git仓库分支,默认使用此处配置的默认分支
default-label: master
eureka:
client:
#注册中心地址
serviceUrl:
defaultZone: http://127.0.0.1:8761/eureka/
eureka的配置、git仓库配置
启动config server,地址栏输入 127.0.0.1:9100/master/user-service.yml,能看到配置内容说明config server搭建成功。
地址的写法很多:
- port后面是分支名,缺省时默认为master 127.0.0.1:9100/user-service.yml
- 文件后缀使用yml、properties、json均可,会自动转化
config client
把eureka client都作为config client,网关、消费者、提供者,只要是eureka server之外的服务都可以是config client
(1)创建时勾选Spring Cloud Config -> Config Client
也可以手动添加依赖:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-config</artifactId> </dependency>
这个依赖是勾选Config Client自动添加的,里面包含了config client、jackson等依赖,可以只添加config client的:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-client</artifactId> </dependency>
(2)配置文件
spring:
application:
#服务名称
name: user-service
cloud:
config:
discovery:
#使用配置中心,默认false
enabled: true
#配置中心的服务名
service-id: config-server
#指定环境,默认使用master分支
#profile: dev
#使用label指定分支
label: dev
eureka:
client:
#注册中心地址
serviceUrl:
defaultZone: http://127.0.0.1:8761/eureka/
配置文件中只需保留erueka、config的配置,其它配置都放到git仓库中
环境有2种指定方式,对应git仓库2种配置方式:
- 如果git仓库使用文件名区分,则使用profile指定
比如服务名是user-service,profile是dev,那就使用分支(默认master)下的user-service-dev.yml
- 如果git仓库使用分支区分,则使用label指定要使用的分支
比如服务名是user-service,会使用指定分支下的user-service.yml
(3)端口问题
如果我们把端口配置server.port放到git仓库中,应用使用默认的8080就启动了,我们配置的端口无效。有2种解决方式:
- 就把server.port写在resources下的application.yml中
- 把server.port放到git仓库中,把resources下的application.yml重命名为bootstrap.yml
spring、springboot启动时会自动加载资源根目录下的application、bootstrap配置文件,只是加载时机不同
启动应用时会在控制台打印端口,可以在控制台查看应用使用的端口
流程:
应用启动注册Eureka Server -> 从Eureka Server获取Config Server的节点列表 -> 从Config Server获取配置。
原文链接:https://www.cnblogs.com/chy18883701161/p/12814921.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:CentOS7安装Redis
- 聊聊微服务架构及分布式事务解决方案! 2020-06-10
- 作为一个面试官,我想问问你Redis分布式锁怎么搞? 2020-06-10
- 分布式锁没那么难,手把手教你实现 Redis 分布锁!|保姆级教 2020-06-08
- 【从单体架构到分布式架构】(二)请求增多,单点变集群(1) 2020-06-07
- 为什么要用springcloud? 2020-06-02
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash