SpringCloud Config分布式配置中心
目录
1、用自己的GitHub账号在GitHub上新建一个名为microservicecloud-config的新Repository
4、在本地地址D:\44\mySpringCloud\microservicecloud-config里面新建一个application.yml
6、新建module模块microservicecloud-config-3344,它即为cloud的配置中心模块
9、主启动类Config_3344_StartSpringCloudApp
11、测试通过Config微服务是否可以从Github上获取配置内容
13、成功实现了用SpringCloud config通过github获取配置信息
1、在本地D:\44\mySpringCloud\microservicecloud-config路径下新建文件microservicecloud-config-client.yml
2、microservicecloud-config-client.yml内容
4、新建microservicecloud-config-client-3355
10、主启动类ConfigClient_3355_StartSpringCloudApp
12、成功实现了客户端3355访问SpringCloudConfig3344通过GitHub获取配置信息
(1)microservicecloud-config-eureka-client.yml
(2)microservicecloud-config-dept-client.yml
(1)新建microservicecloud-config-eureka-client-7001
(1)参考之前的8001拷贝后新建工程microservicecloud-config-dept-client-8001
一、概述
1、分布式系统面临的--配置问题
微服务意味着要将单体应用中的业务拆分成一个个子服务,每个服务的粒度相对较小,因此系统中会出现大量的服务。由于每个服务都需要必要的配置信息才能运行,所以一套集中式的、动态的配置管理设施是必不可少的。SpringCloud提供了ConfigServer来解决这个问题,我们每一个微服务自己带着一个application.yml,上百个配置文件的管理....../(ㄒoㄒ)/~~
2、是什么
是什么:SpringCloud Config为微服务架构中的微服务提供集中化的外部配置支持,配置服务器为各个不同微服务应用的所有环境提供了一个中心化的外部配置。
怎么玩:SpringCloud Config分为服务端和客户端两部分。
(1)服务端也称为分布式配置中心,它是一个独立的微服务应用,用来连接配置服务器并为客户端提供获取配置信息,加密/解密信息等访问接口
(2)客户端则是通过指定的配置中心来管理应用资源,以及与业务相关的配置内容,并在启动的时候从配置中心获取和加载配置信息配置服务器默认采用git来存储配置信息,这样就有助于对环境配置进行版本管理,并且可以通过git客户端工具来方便的管理和访问配置内容。
3、能干嘛
4、与github整合配置
二、SpringCloud Config服务端配置
1、用自己的GitHub账号在GitHub上新建一个名为microservicecloud-config的新Repository
2、由上一步获得SSH协议的git地址
aaa@qq.com:xiaoxin68/microservicecloud-config.git
3、本地硬盘目录上新建git仓库并clone
git clone aaa@qq.com:xiaoxin68/microservicecloud-config.git
4、在本地地址D:\44\mySpringCloud\microservicecloud-config里面新建一个application.yml
(1)yml内容
spring:
profiles:
active:
- dev
---
spring:
profiles: dev #开发环境
application:
name: microservicecloud-config-atguigu-dev
---
spring:
profiles: test #测试环境
application:
name: microservicecloud-config-atguigu-test
# 请保存为UTF-8格式
(2)保存格式必须为UTF-8
5、将上一步的yml文件推送到github
(1)git add .
(2)git commit -m “init yml”
(3)git push origin master
6、新建module模块microservicecloud-config-3344,它即为cloud的配置中心模块
7、pom
8、yml
server:
port: 3344
spring:
application:
name: microservicecloud-config
cloud:
config:
server:
git:
uri: aaa@qq.com:xiaoxin68/microservicecloud-config.git #GitHub上面的git仓库名字
9、主启动类Config_3344_StartSpringCloudApp
10、windws下修改hosts文件,增加映射
11、测试通过Config微服务是否可以从Github上获取配置内容
12、读取配置规则
13、成功实现了用SpringCloud config通过github获取配置信息
三、SpringCloud Config客户端配置与测试
1、在本地D:\44\mySpringCloud\microservicecloud-config路径下新建文件microservicecloud-config-client.yml
2、microservicecloud-config-client.yml内容
spring:
profiles:
active:
- dev
---
server:
port: 8201
spring:
profiles: dev
application:
name: microservicecloud-config-client
eureka:
client:
service-url:
defaultZone: http://eureka-dev.com:7001/eureka/
---
server:
port: 8202
spring:
profiles: test
application:
name: microservicecloud-config-client
eureka:
client:
service-url:
defaultZone: http://eureka-test.com:7001/eureka/
3、将上一步提交到github中
4、新建microservicecloud-config-client-3355
5、pom
6、bootstrap.yml
applicaiton.yml是用户级的资源配置项
bootstrap.yml是系统级的,优先级更加高
Spring Cloud会创建一个`Bootstrap Context`,作为Spring应用的`Application Context`的父上下文。初始化的时候,`Bootstrap Context`负责从外部源加载配置属性并解析配置。这两个上下文共享一个从外部获取的`Environment`。`Bootstrap`属性有高优先级,默认情况下,它们不会被本地配置覆盖。 `Bootstrap context`和`Application Context`有着不同的约定,
所以新增了一个`bootstrap.yml`文件,保证`Bootstrap Context`和`Application Context`配置的分离。
spring:
cloud:
config:
name: microservicecloud-config-client #需要从github上读取的资源名称,注意没有yml后缀名
profile: dev #本次访问的配置项
label: master
uri: http://config-3344.com:3344 #本微服务启动后先去找3344号服务,通过SpringCloudConfig获取GitHub的服务地址
7、application.yml
spring:
application:
name: microservicecloud-config-client
8、windows下修改hosts文件,增加映射
9、新建rest类,验证是否能从github上读取配置
10、主启动类ConfigClient_3355_StartSpringCloudApp
11、测试
12、成功实现了客户端3355访问SpringCloudConfig3344通过GitHub获取配置信息
四、SpringCloud Config配置实战
1、git配置文件本地配置
(1)microservicecloud-config-eureka-client.yml
spring:
profiles:
active:
- dev
---
server:
port: 7001 #注册中心占用7001端口,冒号后面必须要有空格
spring:
profiles: dev
application:
name: microservicecloud-config-eureka-client
eureka:
instance:
hostname: eureka7001.com #冒号后面必须要有空格
client:
register-with-eureka: false #当前的eureka-server自己不注册进服务列表中
fetch-registry: false #不通过eureka获取注册信息
service-url:
defaultZone: http://eureka7001.com:7001/eureka/
---
server:
port: 7001 #注册中心占用7001端口,冒号后面必须要有空格
spring:
profiles: test
application:
name: microservicecloud-config-eureka-client
eureka:
instance:
hostname: eureka7001.com #冒号后面必须要有空格
client:
register-with-eureka: false #当前的eureka-server自己不注册进服务列表中
fetch-registry: false #不通过eureka获取注册信息
service-url:
defaultZone: http://eureka7001.com:7001/eureka/
(2)microservicecloud-config-dept-client.yml
spring:
profiles:
active:
- dev
---
server:
port: 8001
spring:
profiles: dev
application:
name: microservicecloud-config-dept-client
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: org.gjt.mm.mysql.Driver
url: jdbc:mysql://localhost:3306/cloudDB01
username: root
password: 123456
dbcp2:
min-idle: 5
initial-size: 5
max-total: 5
max-wait-millis: 200
mybatis:
config-location: classpath:mybatis/mybatis.cfg.xml
type-aliases-package: com.atguigu.springcloud.entities
mapper-locations:
- classpath:mybatis/mapper/**/*.xml
eureka:
client: #客户端注册进eureka服务列表内
service-url:
defaultZone: http://eureka7001.com:7001/eureka
instance:
instance-id: dept-8001.com
prefer-ip-address: true
info:
app.name: atguigu-microservicecloud-springcloudconfig01
company.name: www.atguigu.com
build.artifactId: $project.artifactId$
build.version: $project.version$
---
server:
port: 8001
spring:
profiles: test
application:
name: microservicecloud-config-dept-client
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: org.gjt.mm.mysql.Driver
url: jdbc:mysql://localhost:3306/cloudDB02
username: root
password: 123456
dbcp2:
min-idle: 5
initial-size: 5
max-total: 5
max-wait-millis: 200
mybatis:
config-location: classpath:mybatis/mybatis.cfg.xml
type-aliases-package: com.atguigu.springcloud.entities
mapper-locations:
- classpath:mybatis/mapper/**/*.xml
eureka:
client: #客户端注册进eureka服务列表内
service-url:
defaultZone: http://eureka7001.com:7001/eureka
instance:
instance-id: dept-8001.com
prefer-ip-address: true
info:
app.name: atguigu-microservicecloud-springcloudconfig02
company.name: www.atguigu.com
build.artifactId: $project.artifactId$
build.version: $project.version$
2、config版的eureka服务端
(1)新建microservicecloud-config-eureka-client-7001
(2)pom
<dependencies>
<!-- SpringCloudConfig配置 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>
<!-- 热部署插件 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>springloaded</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
</dependencies>
(3)bootstrap.yml
(4)application.yml
(5)主启动类
(6)测试
3、config版的dept微服务
(1)参考之前的8001拷贝后新建工程microservicecloud-config-dept-client-8001
(2)pom
<dependencies>
<!-- SpringCloudConfig配置 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</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-eureka</artifactId>
</dependency>
<dependency>
<groupId>com.atguigu.springcloud</groupId>
<artifactId>microservicecloud-api</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jetty</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>springloaded</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
</dependencies>
(3)bootstrap.yml
(4)application.yml
(5)主启动类
(6)测试
其他补充:
推荐阅读
-
利用Spring Cloud Config结合Bus实现分布式配置中心的步骤
-
spring-cloud入门之spring-cloud-config(配置中心)
-
SpringCloud之分布式配置中心Spring Cloud Config高可用配置实例代码
-
详解spring cloud config整合gitlab搭建分布式的配置中心
-
spring cloud config分布式配置中心的高可用问题
-
Spring Cloud微服务架构的构建:分布式配置中心(加密解密功能)
-
SpringCloud用Zookeeper搭建配置中心的方法
-
spring cloud config 配置中心快速实现过程解析
-
跟我学SpringCloud | 第六篇:Spring Cloud Config Github配置中心
-
springcloud学习之路: (五) springcloud集成SpringCloudConfig分布式配置中心