SpringCloud:分布式配置中心——Spring Cloud Config

爱被打了一巴掌 2022-04-23 05:00 323阅读 0赞

一,Spring Cloud Config

  1. Spring Cloud ConfigSpring Cloud体系内部提供的分布式配置中心,用来进行配置信息统一处理。分布式配置中心整体流程如下图,用户推送配置信息到GIT/SVN版本控制中心,创建Config Server服务专门从GIT/SVN上获取配置文件到缓存中,Config Client客户端从Config Server读取配置信息进行项目信息配置;当GIT/SVN上配置文件发生变化时,可以在客户端通过Actuator进行手动刷新或者通过Spring Cloud Bus消息总线进行自动刷新处理(本文演示通过Actuator手动刷新处理)

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTE5NzYzODg_size_16_color_FFFFFF_t_70

二,在GIT上创建配置中心仓库,并添加配置信息,如下图;此处需要注意,文件前缀必须与客户端服务的ApplicationName一致

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTE5NzYzODg_size_16_color_FFFFFF_t_70 1

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTE5NzYzODg_size_16_color_FFFFFF_t_70 2

三,整体服务架构

  1. \* 使用Eureka注册中心进行服务注册,Eureka服务搭建参考之前的博文

20190123224551383.png

四,Config Server端服务搭建

  1. maven依赖
  2. <parent>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter-parent</artifactId>
  5. <version>2.0.1.RELEASE</version>
  6. </parent>
  7. <!-- 管理依赖 -->
  8. <dependencyManagement>
  9. <dependencies>
  10. <dependency>
  11. <groupId>org.springframework.cloud</groupId>
  12. <artifactId>spring-cloud-dependencies</artifactId>
  13. <version>Finchley.M7</version>
  14. <type>pom</type>
  15. <scope>import</scope>
  16. </dependency>
  17. </dependencies>
  18. </dependencyManagement>
  19. <dependencies>
  20. <!--spring-cloud 整合 config-server -->
  21. <dependency>
  22. <groupId>org.springframework.cloud</groupId>
  23. <artifactId>spring-cloud-config-server</artifactId>
  24. </dependency>
  25. <!-- SpringBoot整合eureka客户端 -->
  26. <dependency>
  27. <groupId>org.springframework.cloud</groupId>
  28. <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
  29. </dependency>
  30. </dependencies>
  31. <!-- 注意: 这里必须要添加, 否者各种依赖有问题 -->
  32. <repositories>
  33. <repository>
  34. <id>spring-milestones</id>
  35. <name>Spring Milestones</name>
  36. <url>https://repo.spring.io/libs-milestone</url>
  37. <snapshots>
  38. <enabled>false</enabled>
  39. </snapshots>
  40. </repository>
  41. </repositories>
  42. 1,配置文件 -- application.yml
  43. ###服务注册到eureka地址
  44. eureka:
  45. client:
  46. service-url:
  47. defaultZone: http://localhost:8000/eureka
  48. spring:
  49. application:
  50. ####注册中心应用名称
  51. name: server-config
  52. cloud:
  53. config:
  54. server:
  55. git:
  56. ###git环境地址
  57. uri: https://github.com/zpj0427/spring-cloud-config.git
  58. ####搜索目录
  59. search-paths:
  60. -
  61. ####读取分支
  62. label: master
  63. ####端口号
  64. server:
  65. port: 8100
  66. 2,启动类
  67. package com.gupao;
  68. import org.springframework.boot.SpringApplication;
  69. import org.springframework.boot.autoconfigure.SpringBootApplication;
  70. import org.springframework.cloud.config.server.EnableConfigServer;
  71. import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
  72. @SpringBootApplication
  73. @EnableEurekaClient
  74. // 开启分布式配置服务
  75. @EnableConfigServer
  76. public class SpringCloudConfigServerApp {
  77. public static void main( String[] args ) {
  78. SpringApplication.run(SpringCloudConfigServerApp.class, args);
  79. }
  80. }
  81. 3,访问路径:[http://localhost:8100/member-config-dev.properties][http_localhost_8100_member-config-dev.properties]

20190123224820347.png

五,Config Client端搭建

  1. maven依赖
  2. <parent>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter-parent</artifactId>
  5. <version>2.0.1.RELEASE</version>
  6. </parent>
  7. <!-- 管理依赖 -->
  8. <dependencyManagement>
  9. <dependencies>
  10. <dependency>
  11. <groupId>org.springframework.cloud</groupId>
  12. <artifactId>spring-cloud-dependencies</artifactId>
  13. <version>Finchley.M7</version>
  14. <type>pom</type>
  15. <scope>import</scope>
  16. </dependency>
  17. </dependencies>
  18. </dependencyManagement>
  19. <dependencies>
  20. <!-- SpringBoot整合Web组件 -->
  21. <dependency>
  22. <groupId>org.springframework.boot</groupId>
  23. <artifactId>spring-boot-starter-web</artifactId>
  24. </dependency>
  25. <dependency>
  26. <groupId>org.springframework.cloud</groupId>
  27. <artifactId>spring-cloud-config-client</artifactId>
  28. </dependency>
  29. <!-- SpringBoot整合eureka客户端 -->
  30. <dependency>
  31. <groupId>org.springframework.cloud</groupId>
  32. <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
  33. </dependency>
  34. <!-- acturator服务监控 -->
  35. <dependency>
  36. <groupId>org.springframework.boot</groupId>
  37. <artifactId>spring-boot-starter-actuator</artifactId>
  38. </dependency>
  39. </dependencies>
  40. <!-- 注意: 这里必须要添加, 否者各种依赖有问题 -->
  41. <repositories>
  42. <repository>
  43. <id>spring-milestones</id>
  44. <name>Spring Milestones</name>
  45. <url>https://repo.spring.io/libs-milestone</url>
  46. <snapshots>
  47. <enabled>false</enabled>
  48. </snapshots>
  49. </repository>
  50. </repositories>
  51. 1,注意:Config Client端服务名称必须为member-config,与配置文件前缀一致
  52. 2,配置文件 -- bootstrap.yml(此处application.yml调用不通)
  53. spring:
  54. application:
  55. ####注册中心应用名称
  56. name: member-config
  57. cloud:
  58. config:
  59. ####读取后缀
  60. profile: dev
  61. ####读取config-server注册地址
  62. discovery:
  63. service-id: server-config
  64. enabled: true
  65. ##### eureka服务注册地址
  66. eureka:
  67. client:
  68. service-url:
  69. defaultZone: http://localhost:8000/eureka
  70. server:
  71. port: 8300
  72. ### 启动actuator所有监控节点
  73. management:
  74. endpoints:
  75. web:
  76. exposure:
  77. include: "*"
  78. 3,配置文件信息获取
  79. package com.gupao.config.controller;
  80. import org.springframework.beans.factory.annotation.Value;
  81. import org.springframework.cloud.context.config.annotation.RefreshScope;
  82. import org.springframework.web.bind.annotation.PostMapping;
  83. import org.springframework.web.bind.annotation.RestController;
  84. /**
  85. * @author pj_zhang
  86. * @create 2019-01-23 21:46
  87. **/
  88. @RestController
  89. // 通过调用接口刷新配置中心配置文件,需要添加该注解进行识别
  90. @RefreshScope
  91. public class ConfigController {
  92. @Value("${spring-cloud-member-config}")
  93. private String configValue;
  94. @PostMapping("/getConfig")
  95. public String getConfig() {
  96. return configValue;
  97. }
  98. }
  99. 4,服务启动类
  100. package com.gupao;
  101. import org.springframework.boot.SpringApplication;
  102. import org.springframework.boot.autoconfigure.SpringBootApplication;
  103. import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
  104. @SpringBootApplication
  105. @EnableEurekaClient
  106. public class SpringCloudConfigClientApp {
  107. public static void main( String[] args ) {
  108. SpringApplication.run(SpringCloudConfigClientApp.class, args);
  109. }
  110. }
  111. 5,服务访问

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTE5NzYzODg_size_16_color_FFFFFF_t_70 3

六,配置信息更改

  1. 1,从git端修改配置信息

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTE5NzYzODg_size_16_color_FFFFFF_t_70 4

  1. 2,直接从服务端读取文件,如下图,文件信息修改成功

20190123225543149.png

  1. 3,先从客户端读取文件,如下图,配置信息未发生变更

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTE5NzYzODg_size_16_color_FFFFFF_t_70 5

  1. 4,调用Actuator提供的/actuator/fresh接口刷新信息;如下图,刷新完成后,存在文件信息变更

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTE5NzYzODg_size_16_color_FFFFFF_t_70 6

  1. 5,重新读取配置新,如下图,配置信息已经更新

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTE5NzYzODg_size_16_color_FFFFFF_t_70 7

多环境变更不演示了,就这样吧,太TM卡了。。。

发表评论

表情:
评论列表 (有 0 条评论,323人围观)

还没有评论,来说两句吧...

相关阅读