目录

一、概述

1、分布式系统面临的--配置问题

2、是什么

3、能干嘛

二、SpringCloud Config服务端配置

1、用自己的GitHub账号在GitHub上新建一个名为microservicecloud-config的新Repository

2、由上一步获得SSH协议的git地址

3、本地硬盘目录上新建git仓库并clone

4、在本地地址D:\44\mySpringCloud\microservicecloud-config里面新建一个application.yml

(1)yml内容

(2)保存格式必须为UTF-8

5、将上一步的yml文件推送到github

6、新建module模块microservicecloud-config-3344,它即为cloud的配置中心模块

7、pom

8、yml

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内容

3、将上一步提交到github中

4、新建microservicecloud-config-client-3355

5、pom

6、bootstrap.yml

7、application.yml

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

(2)microservicecloud-config-dept-client.yml

2、config版的eureka服务端

(1)新建microservicecloud-config-eureka-client-7001

(2)pom

(3)bootstrap.yml

(4)application.yml

(5)主启动类

(6)测试

3、config版的dept微服务

(1)参考之前的8001拷贝后新建工程microservicecloud-config-dept-client-8001

(2)pom

(3)bootstrap.yml

(4)application.yml

(5)主启动类

(6)测试

其他补充:


一、概述

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地址

git@github.com:xiaoxin68/microservicecloud-config.git

3、本地硬盘目录上新建git仓库并clone

git clone git@github.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: git@github.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)测试

其他补充:

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐