Spring Cloud Config分布式集群配置中心

r囧r小猫 2022-03-02 04:35 329阅读 0赞

关于Spring Cloud Config

配置服务器主要功能:

  • 提供访问配置的服务接口
  • 对属性进行加密和解密
  • 可以简单地嵌入Spring Boot应用中

配置客户端主要功能:

  • 绑定配置服务器,使用远程属性来初始化Spring容器
  • 对属性进行加密和解密
  • 属性改变时,可以对他们进行重新加载
  • 提供与配置相关的几个管理端点
  • 在初始化引导程序的上下文时,进行绑定配置服务器和属性解密等工作

应用结构

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xjaHExOTk1_size_16_color_FFFFFF_t_70

使用Git,SVN等版本管理系统用于存放配置文件,服务器会到版本管理系统中获取配置,集群中的各个客户端在到服务器中获取配置

Spring Cloud Config默认使用Git管理配置内容,这里使用Svn,默认情况下很多端点需要认证才能访问,配置 management.security.enabled=false 关闭认证,

Spring Cloud Config server 提供4种配置

  • git:默认值,表示去Git仓库读取配置文件
  • subversion:表示去svn仓库读取配置文件
  • native: 表示去本地文件系统中读取配置文件
  • vault:表示去vault中读取配置文件,vault是一款资源控制工具,可对资源实现安全访问

Spring Cloud Config与 Eureka,Zuul,Spring Cloud Bus整合使用

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xjaHExOTk1_size_16_color_FFFFFF_t_70 1

Eureka-server 没啥讲的,看看Eureka-config-server配置服务器

  1. <dependency>
  2. <groupId>org.springframework.cloud</groupId>
  3. <artifactId>spring-cloud-config-server</artifactId>
  4. </dependency>
  5. <dependency>
  6. <groupId>org.springframework.cloud</groupId>
  7. <artifactId>spring-cloud-starter-config</artifactId>
  8. </dependency>
  9. <dependency>
  10. <groupId>org.springframework.cloud</groupId>
  11. <artifactId>spring-cloud-starter-eureka</artifactId>
  12. </dependency>
  13. <dependency>
  14. <groupId>org.tmatesoft.svnkit</groupId>
  15. <artifactId>svnkit</artifactId>
  16. <version>1.9.0</version>
  17. </dependency>

application.yml

  1. server:
  2. port: 8899
  3. spring:
  4. application:
  5. name: eureka-config-server
  6. profiles:
  7. active: subversion
  8. cloud:
  9. config:
  10. server:
  11. svn:
  12. uri: https://localhost/svn/test-project
  13. username: admin
  14. password: 123456
  15. default-label: eureka
  16. eureka:
  17. instance:
  18. hostname: localhost
  19. client:
  20. serviceUrl:
  21. defaultZone: http://localhost:8761/eureka/

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xjaHExOTk1_size_16_color_FFFFFF_t_70 2

Eureka-config-client(消息接收者)

  1. <dependency>
  2. <groupId>org.springframework.cloud</groupId>
  3. <artifactId>spring-cloud-starter-config</artifactId>
  4. </dependency>
  5. <dependency>
  6. <groupId>org.springframework.cloud</groupId>
  7. <artifactId>spring-cloud-starter-eureka</artifactId>
  8. </dependency>
  9. <dependency>
  10. <groupId>org.springframework.boot</groupId>
  11. <artifactId>spring-boot-starter-actuator</artifactId>
  12. <version>1.5.4.RELEASE</version>
  13. </dependency>
  14. <dependency>
  15. <groupId>org.springframework.cloud</groupId>
  16. <artifactId>spring-cloud-starter-bus-amqp</artifactId>
  17. </dependency>

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xjaHExOTk1_size_16_color_FFFFFF_t_70 3

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xjaHExOTk1_size_16_color_FFFFFF_t_70 4

新建一份eureka-config-client-dev.yml配置添加test.user.name属性和值,上传至Svn的 https://localhost/svn/test-project/eureka目录下,调用客户端的/refersh进行配置刷新

20190319172348745.png

整合zuul实现动态路由,Eureka-zuul实际也是一个配置客户端

  1. <dependency>
  2. <groupId>org.springframework.cloud</groupId>
  3. <artifactId>spring-cloud-starter-config</artifactId>
  4. </dependency>
  5. <dependency>
  6. <groupId>org.springframework.cloud</groupId>
  7. <artifactId>spring-cloud-starter-eureka</artifactId>
  8. </dependency>
  9. <dependency>
  10. <groupId>org.springframework.cloud</groupId>
  11. <artifactId>spring-cloud-starter-zuul</artifactId>
  12. </dependency>
  13. <dependency>
  14. <groupId>org.springframework.boot</groupId>
  15. <artifactId>spring-boot-starter-actuator</artifactId>
  16. <version>1.5.4.RELEASE</version>
  17. </dependency>
  18. <dependency>
  19. <groupId>org.springframework.cloud</groupId>
  20. <artifactId>spring-cloud-starter-bus-amqp</artifactId>
  21. </dependency>

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xjaHExOTk1_size_16_color_FFFFFF_t_70 5

为了实现动态路由项目的路由配置都放到svn中,新建一份eureka-zuul-client-rel.yml配置添加以下配置,上传至Svn的 https://localhost/svn/test-project/eureka目录下,调用客户端的/refersh进行配置刷新

20190319173646326.png

当访问http://localhost:9000/routeTest时,会自动路由到 sohu.com, 可以依次启动eureka服务器,配置服务器,路由访问http://localhost:9000/routeTest可以看到最终跳转,修改svn上的配置文件跳转到taobao,修改完后上传svn后,访问http://localhost:9000/refresh端点发送post请求刷新配置,再次访问http://localhost:9000/routeTest跳转taobao网,整个过程不需要对任何节点进行重启操作,只需要访问 /refresh端点即可完成.

实现全部配置刷新和单个节点刷新

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xjaHExOTk1_size_16_color_FFFFFF_t_70 6

外部程序调用 eureka-bus的/bus/refresh 端点后,eureka-bus发送消息到RabbitMQ,RabbitMQ将消息广播给各个消费者,消费者收到消息后重新加载程序配置实现全部配置刷新,注意:消费者均需加入amqp的依赖,eureka-bus为MQ服务其它为客户端

刷新单个节点配置: 可以为”总线”项目的/bus/refresh端点添加destination请求参数,刷新指定项目配置,

例如:刷新网关配置 /bus/refresh?destination=eureka-zuul:9000 格式为”服务ID:端口” 全部实例可以使用eureka-zuul:**

发表评论

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

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

相关阅读