springCould中的Config-从小白开始【10 】

springCould中的Config-从小白开始【10 】_第1张图片

目录

1.spring cloud Config是什么‍️‍️‍️

2.能干什么‍️‍️‍️

3.服务端配置‍️‍️‍️

4.客户端配置‍️‍️‍️

5.动态刷新 ‍️‍️‍️


1.spring cloud Config是什么‍️‍️‍️

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

2.能干什么‍️‍️‍️

  • 分为服务端和客户端                 
  • 集中管理配置文件
  • 不同环境不同配置,动态化的配置更新,分环境部署比如dev/test/prod/beta/release
  • 运行期间动态调整配置,不再需要在每个服务部署的机器上编写配置文件,服务会向配置中心统一拉取配置自己的信息当
  • 配置发生变动时,服务不需要重启即可感知到配置的变化并应用新的配置
  • 将配置信息以REST接口的形式暴露

springCould中的Config-从小白开始【10 】_第2张图片 springCould中的Config-从小白开始【10 】_第3张图片

3.服务端配置‍️‍️‍️

3.1.创建工程‍️‍️‍️

  • 1.在父工程下创建
  • 2.注意jdk和maven版本号

3.2.添加pom‍️‍️‍️

  • 1.springboot依赖
  • 2.通用依赖
  • 3.eureka依赖
  • 4.configcenter依赖
   
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            org.springframework.boot
            spring-boot-starter-actuator
        
        
            org.projectlombok
            lombok
            true
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
        
            org.example
            cloud-api-commons
            ${project.version}
        
        
        
            org.springframework.cloud
            spring-cloud-starter-netflix-eureka-client
        

        
        
            org.springframework.cloud
            spring-cloud-config-server
            
            
                
                    com.jcraft
                    jsch
                
            
        
        
        
            com.github.mwiede
            jsch
            0.2.0
        
    

3.3.修改yml‍️‍️‍️

在配置文件之前,先配置好自己的gitee或github

server:
  port: 3344

spring:
  application:
    name:  cloud-config-center
  cloud:
    config:
      server:
        git:
          #gitee上面的仓库地址
          uri: [email protected]:hqdmdxz/springcould-config.git
          #搜索目录
          search-paths:
            - sprongcloud-config
          #gitee的账号
          username: 账号
          #gitee的密码
          password: 密码
      #读取分支
      lable: master

#注册到eureka
eureka:
  client:
    service-url:
      defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka,http://eureka7003.com:7003/eureka

3.4.主启动类‍️‍️‍️

@EnableConfigServer:启用配置服务器

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

3.5.配置类‍️‍️‍️

因为spring-cloud-config-server还不支持github较新的rsa加密方法

@Configuration
public class MyConfig {
    //Shim to fix the way jGit configures JSch
    static {
        JSch.setConfig("signature.rsa", "com.jcraft.jsch.jce.SignatureRSA");
    }
}

3.6.测试‍️‍️‍️

1.启动主启动类

2.在浏览器输入地址

springCould中的Config-从小白开始【10 】_第4张图片

4.客户端配置‍️‍️‍️

4.1.创建工程‍️‍️‍️

  • 1.在父工程下创建
  • 2.注意jdk和maven版本

4.2.添加pom‍️‍️‍️

1.springbooty依赖

2.通用依赖

3.eureka依赖

4.config依赖

 
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            org.springframework.boot
            spring-boot-starter-actuator
        
        
            org.projectlombok
            lombok
            true
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
        
            org.example
            cloud-api-commons
            ${project.version}
        
        
        
            org.springframework.cloud
            spring-cloud-starter-netflix-eureka-client
        
        
        
            org.springframework.cloud
            spring-cloud-starter-config
        
    

4.3.修改yml‍️‍️‍️

  • applicaiton.yml是用户级的资源配置项
  • bootstrap.yml是系统级的,优先级更加高
  • 要将Client模块下的application.yml文件改为bootstrap.ymll这是很关键的。

注:bootstrap.yml是比application.yml先加载的

       bootstrap.yml优先级高于application.yml

server:
  port: 3355
spring:
  application:
    name: config-client
  cloud:
    #客户端配置
    config:
      #分支名称
      label: master
      #配置文件名称
      name: config
      #读取后缀名称
      profile: dev
      #配置中心地址
      uri: http://localhost:3344

#服务注册到eureka
eureka:
  client:
    service-url:
      defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka,http://eureka7003.com:7003/eureka

4.4.主启动类‍️‍️‍️

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

4.5测试‍️‍️‍️

  • 1.启动主程序类
  • 2.浏览器访问

springCould中的Config-从小白开始【10 】_第5张图片

5.动态刷新 ‍️‍️‍️

问题:

  • 修改GitHub上的配置文件内容做调整
  • 刷新3344,发现ConfigServer配置中心立刻响应
  • 刷新3355,发现ConfigClient客户端没有任何响应
  • 3355没有变化除非自己重启或者重新加载

每次客户端都要重启????

5.1.修改3355模块‍️‍️‍️

添加依赖

        
            org.springframework.boot
            spring-boot-starter-actuator
        

5.2.修改yml‍️‍️‍️

暴露监控端点


#暴露监控端点
management:
  endpoints:
    web:
      exposure:
        include: "*"

5.3.修改业务类 ‍️‍️‍️

在业务类上面添加@RefreshScope注解

@RestController
@RefreshScope
public class ConfigClientController {
    @Value("${config.info}")
    private String configInfo;

    @GetMapping("/configInfo")
    public String getConfigInfo(){
        return configInfo;
    }
}

5.4.发送POST刷新‍️‍️‍️

在gitee上修改文件内容后,刷新浏览器发现还是不行???????

  • 在修改内容之后,手动刷新客户端
curl -X POST "http://localhost:3355/actuator/refresh"

 springCould中的Config-从小白开始【10 】_第6张图片

springCould中的Config-从小白开始【10 】_第7张图片

你可能感兴趣的:(java,后端,spring,cloud,spring,boot,中间件,分布式,架构)