概述

分布式系统面临的—配置问题

微服务意味着要将单体应用中的业务拆分成一个个子服务,每个服务的粒度相对较小,因此系统中会出现大量的服务。由于每个服务都需要必要的配置信息才能运行,所以一套集中式的、动态的配置管理设施是必不可少的。SpringCloud提供了ConfigServer来解决这个问题,我们每一个微服务自己带着一个application.yml,上百个配置文件的管理…/(ㄒoㄒ)/~~

如果没有这样一个东西,每次修改配置文件万一修改错了,就麻烦了,另外修改配置文件一般给运维来做,运维不懂代码,很容易修改错,这时候将相应的配置发布到git通过客户端的方式让运维人员来进行修改就很方便。

是什么



说明:上图中的Client ABC 都是我们的每一个微服务,每个微服务都去Config Server上拿配置信息,Config Server再去远端的git上拿信息。

是什么

SpringCloud Config为微服务架构中的微服务提供集中化的外部配置支持,配置服务器为 各个不同微服务应用 的所有环境提供了一个 中心化的外部配置 。

怎么玩

SpringCloud Config分为 服务端和客户端两部分 。

服务端也称为 分布式配置中心,它是一个独立的微服务应用 ,用来连接配置服务器并为客户端提供获取配置信息,加密/解密信息等访问接口

客户端则是通过指定的配置中心来管理应用资源,以及与业务相关的配置内容,并在启动的时候从配置中心获取和加载配置信息配置服务器默认采用git来存储配置信息,这样就有助于对环境配置进行版本管理,并且可以通过git客户端工具来方便的管理和访问配置内容

能干嘛

1 集中管理配置文件

2 不同环境不同配置,动态化的配置更新,分环境部署比如dev/test/prod/beta/release

3 运行期间动态调整配置,不再需要在每个服务部署的机器上编写配置文件,服务会向配置中心统一拉取配置自己的信息

4 当配置发生变动时,服务不需要重启即可感知到配置的变化并应用新的配置

5 将配置信息以REST接口的形式暴露

与GitHub整合配置

由于SpringCloud Config默认使用Git来存储配置文件(也有其它方式,比如支持SVN和本地文件), 但最推荐的还是Git,而且使用的是http/https访问的形式

SpringCloud Config服务端配置

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

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

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

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



本地地址:D:\44\mySpringCloud

git命令:git clone git@github.com:zzyybs/microservicecloud-config.git

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

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格式

保存格式必须为UTF-8,就是在windows系统中保存的时候,右下角确定的左边选utf-8

说明 :这里—是分隔符,只是这么写的一个约定,可以在配置文件中对不同的环境进行不同的配置,比如在原来的访问地址中加-test 或者-dev将替换相应的配置,如果是-sdafa这种没有的环境将处罚第一段spring:

profiles:

active:

- dev

这里的配置,如果出现了特殊的符号sdafhadg:》“:”之类的将会报错error page的页面

将上一步的YML文件推送到github上

git add .

git commit -m “init yml”

git push origin master

步骤结果

命令清单



GitHub

新建Module模块microservicecloud-config-3344 它即为Cloud的配置中心模块

POM

修改内容

< dependency >
   < groupId > org.springframework.cloud </ groupId >
   < artifactId > spring-cloud- config -server </ artifactId >
</ dependency >
全部内容
< project   xmlns = "http://maven.apache.org/POM/4.0.0"   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" >
   < modelVersion > 4.0.0 </ modelVersion > 

   < parent >
    < groupId > com.atguigu.springcloud </ groupId >
    < artifactId > microservicecloud </ artifactId >
    < version > 0.0.1-SNAPSHOT </ version >
   </ parent > 

   < artifactId > microservicecloud - config -3344 </ artifactId > 

   < dependencies >
   <!-- springCloud  Config  -->
   <dependency>
     <groupId>org.springframework.cloud</groupId>
     <artifactId>spring-cloud- config -server</artifactId>
   </dependency>
   <!-- 避免 Config 的 Git 插件报错: org /eclipse/ jgit / api /TransportConfigCallback  -->
   <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit</artifactId>
        <version>4.10.0.201712302008-r</version>
   </dependency>
    <!-- 图形化监控 -->
    < dependency >
      <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-actuator</artifactId>
    </ dependency >
    <!-- 熔断 -->
    < dependency >
      < groupId > org.springframework.cloud </ groupId >
      < artifactId > spring-cloud-starter- hystrix </ artifactId >
    </ dependency >
    < dependency >
      < groupId > org.springframework.cloud </ groupId >
      < artifactId > spring-cloud-starter- eureka </ artifactId >
    </ dependency >
    < dependency >
      < groupId > org.springframework.cloud </ groupId >
      < artifactId > spring-cloud-starter- config </ 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 >   

</ project > 

YML

server:
 port:  3344  

spring:
 application:
   name:    microservicecloud-config
 cloud:
   config:
     server:
       git:
         uri:  git@github.com:zzyybs/ microservicecloud-config .git  #GitHub上面的git仓库名字 

主启动类Config_3344_StartSpringCloudApp

package  com.atguigu.springcloud; 

import  org.springframework.boot.SpringApplication;
import  org.springframework.boot.autoconfigure.SpringBootApplication;
import  org.springframework.cloud.config.server.EnableConfigServer; 

@SpringBootApplication
@EnableConfigServer
public   class  Config_3344_StartSpringCloudApp
{
 public   static   void  main(String[]  args )
{
 SpringApplication. run (Config_3344_StartSpringCloudApp. class , args );
}
}

@EnableConfigServer

windows下修改hosts文件,增加映射

127.0.0.1  config-3344.com

测试通过Config微服务是否可以从GitHub上获取配置内容

启动微服务3344
http://config-3344.com:3344/application-dev.yml
http://config-3344.com:3344/application-test.yml
http://config-3344.com:3344/application-xxx.yml(不存在的配置)

配置读取规则

官网

/{application}-{profile}.yml

  http://config-3344.com:3344/application-dev.yml
  http://config-3344.com:3344/application-test.yml
  http://config-3344.com:3344/application-xxx.yml(不存在的配置)

/{application}/{profile}[/{label}]

  http://config-3344.com:3344/application/dev/master
  http://config-3344.com:3344/application/test/master
  http://config-3344.com:3344/application/xxx/master

/{label}/{application}-{profile}.yml

  http://config-3344.com:3344/master/application-dev.yml
  http://config-3344.com:3344/master/application-test.yml

成功实现了用SpringCloud Config通过GitHub获取配置信息

SpringCloud Config客户端配置与测试

在本地D:\44\mySpringCloud\microservicecloud-config路径下新建文件 microservicecloud-config-client.yml

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/ 

注意:

server:
   port: 8201
spring:
   profiles: dev
   application:
     name:   microservicecloud-config-client
server:
   port: 8202
spring:
   profiles: test
   application:
     name:   microservicecloud-config-client

将上一步提交到GitHub中

新建microservicecloud-config-client-3355

POM

修改内容

<!-- SpringCloud  Config 客户端 -->
   < dependency >
     < groupId > org.springframework.cloud </ groupId >
     < artifactId > spring-cloud-starter- config </ artifactId >
   </ dependency >
全部内容
< project   xmlns = "http://maven.apache.org/POM/4.0.0"   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" >
 < modelVersion > 4.0.0 </ modelVersion > 

 < parent >
  < groupId > com.atguigu.springcloud </ groupId >
  < artifactId > microservicecloud </ artifactId >
  < version > 0.0.1-SNAPSHOT </ version >
 </ parent > 

 < artifactId > microservicecloud - config -client-3355 </ artifactId > 

 < dependencies >
 <!-- SpringCloud  Config 客户端 -->
 <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- hystrix </ artifactId >
  </ dependency >
  < dependency >
    < groupId > org.springframework.cloud </ groupId >
    < artifactId > spring-cloud-starter- eureka </ artifactId >
  </ dependency >
  < dependency >
    <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-config</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 >
</ project > 

bootstrap.yml

是什么

applicaiton.yml是用户级的资源配置项

bootstrap.yml是系统级的, 优先级更加高

Spring Cloud会创建一个Bootstrap Context,作为Spring应用的Application Context的 父上下文 。初始化的时候,Bootstrap Context负责从外部源加载配置属性并解析配置。这两个上下文共享一个从外部获取的EnvironmentBootstrap属性有高优先级,默认情况下,它们不会被本地配置覆盖。 Bootstrap contextApplication Context有着不同的约定,

所以新增了一个bootstrap.yml文件,保证Bootstrap ContextApplication Context配置的分离。

### 内容
    spring:
   cloud:
     config:
       name: microservicecloud-config-client #需要从github上读取的资源名称,注意没有yml后缀名
      profile: dev     #本次访问的配置项
       label:  master
       uri:  http://config-3344.com:3344   #本微服务启动后先去找3344号服务,通过SpringCloudConfig获取GitHub的服务地址 

application.yml

spring:
   application:
     name:  microservicecloud-config-client 

windows下修改hosts文件,增加映射

127.0.0.1  client-config.com

新建rest类,验证是否能从GitHub上读取配置

package  com.atguigu.springcloud.rest; 

import  org.springframework.beans.factory.annotation.Value;
import  org.springframework.web.bind.annotation.RequestMapping;
import  org.springframework.web.bind.annotation.RestController; 

@RestController
public   class  ConfigClientRest { 

   @Value ( "${spring.application.name}" )
   private  String  applicationName ; 

   @Value ( "${eureka.client.service-url.defaultZone}" )
   private  String  eurekaServers ; 

   @Value ( "${server.port}" )
   private  String  port ; 

   @RequestMapping ( "/config" )
   public  String getConfig()
  {
   String  str  =  "applicationName: " + applicationName + "\t eurekaServers:" + eurekaServers + "\t port: " + port ;
   System. out .println( "******str: " +  str );
    return   "applicationName: " + applicationName + "\t eurekaServers:" + eurekaServers + "\t port: " + port ;
  }
} 

主启动类ConfigClient_3355_StartSpringCloudApp



package  com.atguigu.springcloud; 

import  org.springframework.boot.SpringApplication;
import  org.springframework.boot.autoconfigure.SpringBootApplication; 

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

测试

启动Config配置中心3344微服务并自测

  http://config-3344.com:3344/application-dev.yml

启动3355作为Client准备访问

bootstrap.yml里面的profile值是什么,决定从github上读取什么

  假如目前是 profile: dev
    dev默认在github上对应的端口就是8201
    http://client-config.com:8201/config
  假如目前是 profile: test
    test默认在github上对应的端口就是8202
    http://client-config.com:8202/config

成功实现了客户端3355访问SpringCloud Config3344通过GitHub获取配置信息

SpringCloud Config配置实战

目前情况

1 Config服务端配置配置OK且测试通过,我们可以和config+GitHub进行配置修改并获得内容

2 此时我们做一个eureka服务+一个Dept访问的微服务,将两个微服务的配置统一由于github获得实现统一配置分布式管理,完成多环境的变更

步骤

Git配置文件本地配置

在本地D:\44\mySpringCloud\microservicecloud-config路径下新建文件 microservicecloud-config-eureka-client.yml

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/

在本地D:\44\mySpringCloud\microservicecloud-config路径下新建文件 microservicecloud-config-dept-client.yml

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$ 

Config版的eureka服务端

新建工程microservicecloud-config-eureka-client-7001

POM

 

< project   xmlns = "http://maven.apache.org/POM/4.0.0"   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" >
  < modelVersion > 4.0.0 </ modelVersion > 

  < parent >
    < groupId > com.atguigu.springcloud </ groupId >
    < artifactId > microservicecloud </ artifactId >
    < version > 0.0.1-SNAPSHOT </ version >
  </ parent > 

  < artifactId > microservicecloud - config - eureka -client-7001 </ artifactId > 

  < 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 >
</ project > 

bootstrap.yml



spring:
   cloud:
     config:
       name:  microservicecloud-config-eureka-client      #需要从github上读取的资源名称,注意没有yml后缀名
       profile:  dev
       label:  master
       uri:  http://config-3344.com:3344       #SpringCloudConfig获取的服务地址 

application.yml

spring:
  application:
    name:  microservicecloud-config-eureka-client 

主启动类Config_Git_EurekaServerApplication

package  com.atguigu.springcloud; 

import  org.springframework.boot.SpringApplication;
import  org.springframework.boot.autoconfigure.SpringBootApplication;
import  org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; 

/**
 * EurekaServer服务器端启动类,接受其它微服务注册进来
 *  @author   zhouyang
 */
@SpringBootApplication
@EnableEurekaServer
public   class  Config_Git_EurekaServerApplication
{
   public   static   void  main(String[]  args )
  {
   SpringApplication. run (Config_Git_EurekaServerApplication. class ,  args );
  }
}

测试

先启动microservicecloud-config-3344微服务,保证Config总配置是OK的

再启动microservicecloud-config-eureka-client-7001微服务

http://eureka7001.com:7001/

出现eureak主页表示成功启动

Config版的dept微服务

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

POM



< project   xmlns = "http://maven.apache.org/POM/4.0.0"   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" >
   < modelVersion > 4.0.0 </ modelVersion > 

   < parent >
    < groupId > com.atguigu.springcloud </ groupId >
    < artifactId > microservicecloud </ artifactId >
    < version > 0.0.1-SNAPSHOT </ version >
   </ parent > 

   < artifactId > microservicecloud - config - dept -client-8001 </ artifactId > 

   < 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 >
</ project >

bootstrap.yml

spring:
 cloud:
   config:
     name:  microservicecloud-config-dept-client  #需要从github上读取的资源名称,注意没有yml后缀名
     #profile配置是什么就取什么配置dev or test
     #profile: dev
     profile:  test
     label:  master
     uri:  http://config-3344.com:3344   #SpringCloudConfig获取的服务地址

application.yml

spring:
   application:
     name:  microservicecloud-config-dept-client

主启动类及其它一套业务逻辑代码

主启动类

        package  com.atguigu.springcloud; 

import  org.springframework.boot.SpringApplication;
import  org.springframework.boot.autoconfigure.SpringBootApplication;
import  org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import  org.springframework.cloud.netflix.eureka.EnableEurekaClient; 

@SpringBootApplication
@EnableEurekaClient   //本服务启动后会自动注册进 eureka 服务中
@EnableDiscoveryClient   //服务发现
public   class  DeptProvider8001_App
{
   public   static   void  main(String[]  args )
  {
   SpringApplication. run (DeptProvider8001_App. class ,  args );
  }
}

其它业务逻辑代码



配置说明

spring:
   cloud:
     config:
       name:  microservicecloud-config-dept-client  #需要从github上读取的资源名称,注意没有yml后缀名
       #profile配置是什么就取什么配置dev or test
       #profile: dev
       profile:  test
       label:  master
       uri:  http://config-3344.com:3344   #SpringCloudConfig获取的服务地址

主要看bootstrap.yml文件里面的

profile: 属性具体值是什么,从而确定它能从github上取得什么样的配置

假如配置dev左图,如果配置test那就找右图,具体各自数据库不同,从而依据配置得到分布式配置的目的





测试

test配置默认访问

http://localhost:8001/dept/list

可以看到数据库配置是02

本地换配置成dev

http://localhost:8001/dept/list

可以看到数据库配置是01

SpringCloud学习笔记(九):SpringCloud Config 分布式配置中心的更多相关文章

  1. SpringCloud学习笔记《---06 Config 分布式配置中心---》基础篇

  2. Spring-cloud微服务实战【九】:分布式配置中心config

      回忆一下,在前面的文章中,我们使用了spring cloud eureka/ribbon/feign/hystrix/zuul搭建了一个完整的微服务系统,不管是队内还是对外都已经比较完善了,那我们 ...

  3. java框架之SpringCloud(7)-Config分布式配置中心

    前言 分布式系统面临的配置问题 微服务意味着要将单体应用中的业务拆分成一个个子服务,每个服务的粒度相对较小,因此系统中标会出现大量的服务.由于每个服务都需要必要的配置信息才能运行,所以一套集中式的.动 ...

  4. SpringCloud与微服务Ⅹ --- SpringCloud Config分布式配置中心

    一.SpringCloud Config是什么 分布式系统面临的问题 --- 配置问题 微服务意味着要将单体应用中的业务拆分成一个个子服务,每个服务的粒度相对较小,因此系统中会出现大量的服务.由于每个 ...

  5. SpringCloud Alibaba实战(10:分布式配置中心)

    源码地址:https://gitee.com/fighter3/eshop-project.git 持续更新中-- 在我们前面介绍Nacos的时候,说到,Nacos除了可以作为注册中心,还可以作为配置 ...

  6. SpringCloud第六步:搭建分布式配置中心

    什么是配置中心 在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件.在Spring Cloud中,有分布式配置中心组件spring cloud con ...

  7. SpringCloud学习成长之路 六 cloud配置中心

    一.简介 在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件.在Spring Cloud中,有分布式配置中心组件spring cloud config ...

  8. Spring Cloud Config 分布式配置中心【Finchley 版】

    一. 介绍 1,为什么需要配置中心? 当服务部署的越来越多,规模越来越大,对应的机器数量也越来越庞大,靠人工来管理和维护服务的配置信息,变得困难,容易出错. 因此,需要一个能够动态注册和获取服务信息的 ...

  9. SrpingCloud 之SrpingCloud config分布式配置中心实时刷新

    默认情况下是不能及时获取变更的配置文件信息 Spring Cloud分布式配置中心可以采用手动或者自动刷新 1.手动需要人工调用接口   监控中心 2.消息总线实时通知  springbus 动态刷新 ...

随机推荐

  1. 覆盖element ui 的样式

    我们可以使用 !important  来覆盖element ui 的样式 首先先在浏览器中找到 我们所要修改的样式 ,然后找到她的 class  重新写他的样式 ,例如 . app  { width ...

  2. Vue.js 复选框

    demo <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <titl ...

  3. js用正则判断身份证号码

    在用户注册或修改信息时会用到正则表达式判断身份证号,直接调用该函数即可 //判断身份证号码 function idCardFn(idCard){ }(||)?\d{}([-]|[])([-]|[]\d ...

  4. Java&Quartz实现任务调度

    目录 Java&Quartz实现任务调度 1.Quartz的作用 2.预备 3.Quartz核心 3.1.Job接口 3.2.JobDetail类 3.3 JobExecutionContex ...

  5. C# using System.Windows.Media.Imaging;该引用哪个dll

    在网上看到BitmapSource和WriteableBitmap一些类听说是用 using System.Windows.Media.Imaging:可是我发现VS中没有什么System.Windo ...

  6. leetcood学习笔记-160*-相交链表

    题目描述: 方法一: class Solution(object): def getIntersectionNode(self, headA, headB): """ : ...

  7. [JZOJ 5860] 荒诞

    思路: 头皮发麻的操作... 理解一下题意会发现:排名为\(i\)的前缀正好是第\(i\)个前缀. 所以问题就变成了求\(1->len\)的平方和,注意取模即可. #include <bi ...

  8. (转)Linux负载均衡软件LVS之一(概念篇)

    转:http://ixdba.blog.51cto.com/2895551/552947 Linux负载均衡软件LVS之二(安装篇):http://ixdba.blog.51cto.com/28955 ...

  9. javascript 插件开发教程

    如何自己开发一款js或者jquery插件 引子 初学js不久,接触到js插件开发,其实很简单,不像网上吹嘘的那么复杂,又要掌握js,掌握jquery,其实没有那么复杂,下面简单介绍,供学习使用. jq ...

  10. USACO06JAN The Cow Prom /// tarjan求强联通分量 oj24219

    题目大意: n个点 m条边的图 求大小大于1的强联通分量的个数 https://www.cnblogs.com/stxy-ferryman/p/7779347.html tarjan求完强联通分量并染 ...