一。分布式配置中心简介

Spring Cloud Config为服务端和客户端提供了分布式系统的外部化配置支持。配置服务器为各应用的所有环境提供了一个中心化的外部配置。它实现了对服务端和客户端对Spring Environment和PropertySource抽象的映射,所以它除了适用于Spring构建的应用程序,也可以在任何其他语言运行的应用程序中使用。作为一个应用可以通过部署管道来进行测试或者投入生产,我们可以分别为这些环境创建配置,并且在需要迁移环境的时候获取对应环境的配置来运行

如果修改 客户端1的环境为producet 获取的就是clientA-product.properties配置 配置随着环境的改变而改变

二。springcloud config server

使用springcloud的配置中心 和章节1的图示结果一致 参考http://cloud.spring.io/spring-cloud-static/Dalston.SR5/single/spring-cloud.html#_spring_cloud_config_server
首先创建configserver的maven项目 添加依赖

<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.9.RELEASE</version></parent><properties><CLOUD-VERSION>Dalston.SR5</CLOUD-VERSION></properties><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${CLOUD-VERSION}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-config-server</artifactId></dependency></dependencies>

src/main/resources目录下 添加配置文件application.yml

server: port: 8888
spring:cloud:config:server:git:uri: file:///E:/workspace3/wk/wk_config application: name: CONFIGSERVER

E:/workspace3/wk/wk_config目录可以使用eclipse创建一个项目 然后 右键 team share  git 创建一个本地git 或者
去github上注册账号创建一个github的项目 uri上粘贴github的地址  
wk_config目录下 添加一个 文件 configclient-dev.properties 添加一个键值对  name=zs 用于测试
添加运行类

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

至此配置中心服务器配置完成 接下来配置客户端
添加一个maven项目 configclient
添加maven依赖

<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.9.RELEASE</version></parent><properties><CLOUD-VERSION>Dalston.SR5</CLOUD-VERSION></properties><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${CLOUD-VERSION}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><dependencies>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></dependencies>

添加bootstrap.yml

spring:cloud:config:uri: https://localhost:8888

添加application.yml

spring: application: name: configclientprofiles: active: dev

添加main测试类

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

添加控制类

package cn.et.manager.test;import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@RefreshScope  //用于当配置修改后自动刷新
public class TestController {@Value("${name}")String name;@GetMapping("/test")public String test(){return name;}
}

访问 http://localhost:8080/test 发现输出了之前配置中心的zs 将 name=zs 改成ls 发现不会自动刷新
  访问 http://localhost:8080/refresh后 发现自动刷新了 此时方式比较麻烦 后面zookeeper配置中心自动监控刷新
  配置中心可以使用注册和发现来实现多配置中心高可用 具体参考http://cloud.spring.io/spring-cloud-static/Dalston.SR5/single/spring-cloud.html#discovery-first-bootstrap

三 使用zookeeper作为配置中心
 使用zookeeper作为配置中心可以利用zookeeper本身的高可用和数据的高一致性 zookeeper作为配置中心能自动监控属性值的变化后  自动更新 以下参考http://cloud.spring.io/spring-cloud-static/Dalston.SR5/single/spring-cloud.html#spring-cloud-zookeeper-config
 zookeeper作为配置中心后 不在需要配置中心的项目  eclipse安装zookeeper插件 添加更新地址 选择第三项安装
  http://www.massedynamic.org/eclipse/updates/ 

可以看到zookeeper explorer视图 打开 new zookeeper connection  (本机下载一个zookeeper服务器点击 zk-server.bat启动)输入以下

在zookeeper邮件 new node 添加一些 节点 配置中心的节点新建规则 
/根节点名称/应用名称-profile/键=值
比如 我的根节点名称 使用的名字是wkconf 我的项目名称是wkmanager wkmanager新建一个值 是name=zs

接下来 就新建wk_manger的项目 添加依赖

<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.9.RELEASE</version></parent><properties><CLOUD-VERSION>Dalston.SR5</CLOUD-VERSION></properties><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${CLOUD-VERSION}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-zookeeper-config</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-zookeeper-discovery</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-actuator</artifactId></dependency></dependencies>

添加 bootstrap.yml

spring:cloud:zookeeper:connect-string: localhost:2181config:enabled: true  root: wkconfdefaultContext: wkmanagerprofileSeparator: '-'watcher: enabled: true

添加application.yml

spring: application: name: wkmanagerprofiles: active: dev

添加main类

package cn.et.manager;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
/*** manager的主入口* @author jiaozi**/
@SpringBootApplication
@EnableDiscoveryClient
public class ManagerMain {public static void main(String[] args) {SpringApplication.run(ManagerMain.class, args);}}

添加controller测试获取配置

package cn.et.manager.test;import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@RefreshScope
public class TestController {@Value("${name}")String name;@GetMapping("/test")public String test(){return name;}
}

访问 http://localhost:8080/test 发现输出了之前配置中心的zs 将 name=zs 改成ls 发现自动刷新

转载于:https://www.cnblogs.com/liaomin416100569/p/9331148.html

springcloud记录篇6-分布式配置中心相关推荐

  1. 白话SpringCloud | 第八章:分布式配置中心的服务化及动态刷新

    前言 上一章节,简单介绍了分布式配置中心Spring Cloud Config的使用.同时,我们也遗漏了一些问题,比如如何配置实时生效,当服务端地址变更或者集群部署时,如何指定服务端地址?回想,在服务 ...

  2. Spring Cloud学习系列第六篇【分布式配置中心】

    今天来学习如何使用Spring Cloud Config在微服务中搭建一个分布式配置中心,使用了分布式配置中心之后,我们就可以通过它来管理应用资源与业务资源配置内容.Spring Cloud Conf ...

  3. SpringCloud教程六:分布式配置中心(SpringCloud Config)

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

  4. 史上最简单的SpringCloud教程 | 第六篇: 分布式配置中心(Spring Cloud Config)

    转:https://blog.csdn.net/forezp/article/details/70037291 最新版本: 史上最简单的SpringCloud教程 | 第六篇: 分布式配置中心(Spr ...

  5. 史上最简单的SpringCloud教程 | 第七篇: 高可用的分布式配置中心(Spring Cloud Config)(Finchley版本)

    转载请标明出处: http://blog.csdn.net/forezp/article/details/81041045 本文出自方志朋的博客 个人博客纯净版:https://www.fangzhi ...

  6. 史上最简单的SpringCloud教程 | 第六篇: 分布式配置中心(Spring Cloud Config)(Finchley版本)...

    转载请标明出处: 原文首发于:https://www.fangzhipeng.com/springcloud/2018/08/30/sc-f6-config/ 本文出自方志朋的博客 在上一篇文章讲述z ...

  7. SpringCloud微服务架构,Config 分布式配置中心,Bus 消息总线, Stream 消息驱动,Sleuth+Zipkin 链路追踪

    Config分布式配置中心 Config 概述 概述 • Spring Cloud Config 解决了在分布式场景下多环境配置文件的管理和维护. • 好处: • 集中管理配置文件 • 不同环境不同配 ...

  8. springcloud config 分布式配置中心

    一.介绍 1.场景: 微服务系统中,系统多.实例多,如果每个系统都有自己一套配置加载.维护的机制,会导致在生产过程中因为配置问题引发的不必要的沟通成本.故障风险.需要采用分布式配置中心统一管理.统一实 ...

  9. 第六篇: 分布式配置中心(Spring Cloud Config)(Finchley版本)V2.0_dev

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

最新文章

  1. 批量关闭公众号推送_微信推出“一键拒收”长期未读公众号推送功能
  2. OpenCV中泛洪填充算法解析与应用
  3. JS进阶篇--ckplayer.js视频播放插件
  4. 【转】DB2学习路线
  5. java异常——分析堆栈跟踪元素+使用异常机制的技巧
  6. 线性插值算法实现图像_C程序实现插值搜索算法
  7. centos8安装中文(zh_CN)语言包
  8. 如何在A用户下建立视图,这个视图是A的表与B的表进行关联的?
  9. cocos android-1,Cocos2D-Android-1之源码详解:5.Box2dTest
  10. [BZOJ] 1610: [Usaco2008 Feb]Line连线游戏
  11. 嵌入式可视化编程软件选哪个好?(可视化编程平台介绍、测评与选择)【Scratch、Mind+、Mixly】
  12. 2016ICPC北京现场赛打铁退役之旅
  13. 局域网即时通讯软件_无线局域网中,安卓手机和电脑的资源如何实现互传互访?...
  14. 云脉人脸识别门禁 拒绝“伪装”蒙混过关
  15. 原来微信“对方正在输入”在这种情况下才显示
  16. 英文字母替换加密(大小写转换+后移1位)PTA
  17. Spring全家桶-Spring Security之自定义数据库表认证和鉴权
  18. 钱多多软件第二阶段冲刺1
  19. RedHat 7.8下Redis安装和配置
  20. 天龙八部怀旧服务器维护,新天龙八部怀旧服 2月18日全服更新维护公告

热门文章

  1. 如何防止app接口被别人调用
  2. ubuntu 国内源
  3. Spring 系列: Spring 框架
  4. Flutter动画SizeTransition使用解析
  5. flutter GestureDetector 手势处理
  6. Android PopupWindow系列 (一) —— popupWindow基本使用方略
  7. 驱动开发中的常用操作
  8. Mysql ==》 单表查询
  9. 2-1 git合并 打tag
  10. Swift项目开发实战-基于分层架构的多版本iPhone计算器-直播公开课