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

关于Spring Cloud Config

配置服务器主要功能:

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

配置客户端主要功能:

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

应用结构

使用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整合使用

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

		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-config-server</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-config</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-eureka</artifactId>
		</dependency>
		<dependency>
			<groupId>org.tmatesoft.svnkit</groupId>
			<artifactId>svnkit</artifactId>
			<version>1.9.0</version>
		</dependency>

application.yml 

server:
  port: 8899
spring:
  application:
    name: eureka-config-server
  profiles:
    active: subversion
  cloud:
    config:
      server:
        svn:
          uri: https://localhost/svn/test-project
          username: admin
          password: 123456
        default-label: eureka
eureka:
  instance:
    hostname: localhost
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/

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

		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-config</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-eureka</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-actuator</artifactId>
			<version>1.5.4.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-bus-amqp</artifactId>
		</dependency>

  

 

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

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

		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-config</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-zuul</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-actuator</artifactId>
			<version>1.5.4.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-bus-amqp</artifactId>
		</dependency>

  

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

 当访问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端点即可完成.

 

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

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

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

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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值