范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

SpringCloud系列之分布式配置中心学习

  1、分布式配置中心简介
  在实际的项目开发中,配置文件是使用比较多的,很多项目有测试环境(TEST)、开发环境(DEV)、规范的项目还有集成环境(UAT)、生产环境(PROD),每个环境就一个配置文件。
  这个在单体应用的项目里是没什么问题,如果是分布式微服务项目,就会有很多的模块,比如微服务A、微服务B等等,每个工程都有一套配置文件,随着业务增长,肯定会有很多配置,分散管理,不能实现统一的管理,所以就有了微服务的配置文件统一管理组件,比如spring cloud官方的spring cloud config、携程的 Apollo,还有最近比较火的阿里 nacos,每款产品各有自己的特点,不过本博客只介绍spring cloud config
  作为一款分布式的配置中心,其基本的功能应该有统一的配置文件管理,至于怎么存储可以自行设计,客户端可以从配置中心下拉配置数据,还有一个重要功能就是推送,有了推送功能,才能做到将数据统一发给客户端及时更新,总不能让客户端自己pull,如果在客户端很多的情况,这种肯定是不合理的,简单画图表示:
  2、什么是SpringCloud Config?
  ok,前面简单介绍了分布式配置中心的基本概念,现在看看spring cloud提供的这块分布式配置中心spring cloud config是怎么设计?简单归纳其特点:文件存储:默认Git仓库(github、gitlab等等)版本关联:默认Git权限控制:需要Git支持多环境(profile):配置文件指定动态更新:需要基于Springcloud config bus定时更新:需要自行拓展管理后台:默认不带
  所以有一个明显的特点,springcloud config默认就是基于git仓库来实现配置文件统一管理的,所以很明显其有如下角色:配置仓库:git仓库配置服务端:config server,负责从git仓库下拉配置文件到本地,然后可以统一推送给客户端配置客户端:各微服务业务客户端,可以从配置服务端pull配置数据
  ok,简单画图表示其架构,如图所示:
  3、例子实验环境准备
  环境准备:JDK 1.8SpringBoot2.2.3SpringCloud(Hoxton.SR7)Maven 3.2+开发工具IntelliJ IDEAsmartGit
  github远程仓库创建,可以在github上创建一个springCloudExamples项目,然后新建一个文件夹,命名为config-repository4、Config Server代码实现
  创建一个SpringBoot Initialize项目,详情可以参考我之前博客:SpringBoot系列之快速创建项目教程
  如图:选择config Server
  也可以自行在maven引入如下配置:   org.springframework.cloud     spring-cloud-config-server 
  使用注解@EnableConfigServer表示这个config服务端工程package com.example.springcloud.server;  import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.config.server.EnableConfigServer;  @SpringBootApplication @EnableConfigServer public class SpringcloudConfigServerApplication {      public static void main(String[] args) {         SpringApplication.run(SpringcloudConfigServerApplication.class, args);     }  }
  新建bootstrap.yml配置文件,指定github仓库的地址:server:   port: 8761 spring:   application:     name: springcloud-config-server   cloud:     config:       server:         git:           uri: https://github.com/your_github_account/springCloudExamples           username: your_github_account           password: your_github_password           search-paths: config-repository5、Config Client代码实现
  同样新建SpringBoot Initialize项目,快速创建
  pom配置文件:             org.springframework.boot             spring-boot-starter-web                               org.springframework.cloud             spring-cloud-starter-config         
  yaml配置,uri指定为config server的地址,profile是环境变量,可以指定为dev(开发环境),label表示分支,master是指github的主干分支server:   port: 8082 spring:   application:     name: springcloud-config-client   cloud:     config:       uri: http://127.0.0.1:8761/       profile: dev       label: master
  然后,我们要在github仓库新建配置文件:命名规范必须是客户端的spring. application.name加上profile
  在配置文件,随便写点:config.client.profile=springcloud-config-client-dev
  测试:要先启动config server,然后再启动config client,写个例子测试,要加上@RefreshScope实现刷新功能@RestController @RefreshScope public class ConnfigClientController {      @Value("${config.client.profile}")     private String profile;      @GetMapping(value = "/test")     public String test() {         return this.profile;     }  }
  启动SpringBoot项目,测试:
  在config server启动过程,可以看到config server从github下拉配置文件到本地缓存,具体是C盘AppData目录
  6、客户端pull刷新实现
  客户端要实现下拉配置数据,怎么实现?可以集成spring-boot-starter-actuator来实现:
  pom配置:             org.springframework.boot             spring-boot-starter-actuator         
  spring-boot-starter-actuator配置:include加上rehresh配置management:   endpoints:     web:     # 前缀名,默认也是actuator       base-path: /actuator       # 默认只开放info,health的方式访问,加上refresh       exposure:         include: info,health,refresh   endpoint:     health:       show-details: always     refresh:       enabled: true
  访问客户端的链接,注意要用post方式,http://localhost:8082/actuator/refresh
  github配置文件没更新的情况:
  修改配置文件,commit和push到github
  调用接口时候,可以看到config client从config server获取数据:
  7、消息总线Spring Cloud Bus什么是总线?
  在微服务架构的系统中,通常会使用轻量级的消息代理来构建一个共用的消息主题,并让系统中所有微服务实例都链接上来。由于该主题中产生的消息会被所有实例监听和消费,所以称它为消息总线。什么是Spring Cloud Bus?
  Spring Cloud Bus是用来将分布式系统的节点与轻量级消息系统链接起来的框架,它整合了Java的事件处理机制和消息中间件的功能
  Spring Cloud Bus能管理和传播分布式消息间的消息,就像一个分布式执行器,可用于广播状态更改、事件推送等,也可以当作微服务间的通信通道
  看了理论,貌似不理解?所以还是从前面学习说起,前面介绍说明作为一个分布式的配置中心,至少应该有推送消息的功能,所以这个配置中心的角色可以由config server充当,实现的效果是config server(配置中心)一刷新数据,客户端都能同步更新,画图进行说明:
  1、配置中心(config server)执行bus-refresh,spring cloud bus提供的刷新接口,配置中心就从git仓库下拉数据到本地git仓库2、执行bus-refresh之后,将消息发给spring cloud bus(消息总线),消息总线将消息写到消息队列(rabbitMQ)的topic中3、只要订阅这个消息队列topic的都能监听到spring cloud bus的消息(基于rabbitmq)4、监听到之后,config client从config server pull更新配置数据
  其实简而言之,Config Client实例都监听RabbitMQ中同一个topic,当一个服务刷新数据的时候,它会把这个信息放入到Topic中,这样其它监听同一Topic的服务就能得到通知,然后去更新自身的配置,当然这个刷新操作不一定要放在config server,也可以放在某个客户端触发,只要将消息发送给消息总线就可以8、Docker安装部署RabbitMQ
  主要介绍一下Docker版本,常用的docker镜像操作:
  查询rabbitMQ镜像:
  management版本,不指定默认为最新版本latest docker search rabbitmq:management
  拉取镜像:docker pull rabbitmq:management
  查看docker镜像列表:docker images
  Docker容器操作:
  ok,上面命令执行后,镜像就已经拉取到本地仓库了,然后可以进行容器操作,启动rabbitMQ
  简单版docker run -d -p 5672:5672 -p 15672:15672 --name rabbitmq rabbitmq:management 1-d 后台运行-p 隐射端口–name 指定rabbitMQ名称
  复杂版(设置账户密码,hostname)docker run -d -p 15672:15672  -p  5672:5672  -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin --name rabbitmq --hostname=rabbitmqhostone  rabbitmq:management 1-d 后台运行-p 隐射端口–name 指定rabbitMQ名称RABBITMQ_DEFAULT_USER 指定用户账号RABBITMQ_DEFAULT_PASS 指定账号密码
  执行如上命令后访问:http://ip:15672/
  默认账号密码:guest/guest
  其它常用容器命令:
  查看运行中的容器# 查看所有的容器用命令docker ps -a docker ps
  启动容器# eg: docker start 9781cb2e64bd docker start CONTAINERID[容器ID]
  stop容器docker stop CONTAINERID[容器ID]
  删除一个容器 docker rm CONTAINERID[容器ID]
  查看Docker容器日志# eg:docker logs 9781cb2e64bd docker logs container‐name[容器名]/container‐id[容器ID]9、Spring Cloud Bus动态刷新
  有了前面的学习,接着进行代码例子实践,config server pom配置:   org.springframework.boot     spring-boot-starter-actuator       org.springframework.cloud     spring-cloud-starter-bus-amqp 
  yaml配置:开放bus-refreshmanagement:   endpoints:     web:       base-path: /actuator       exposure:         include: info,health,refresh,bus-refresh   endpoint:     health:       show-details: always     refresh:       enabled: true
  加上rabbitmq配置  # RabbitMQ配置   rabbitmq:     host: 192.168.6.155     port: 5672     username: guest     password: guest
  Config Client代码例子改造,pom配置:    org.springframework.cloud       spring-cloud-starter-bus-amqp   
  也要加上rabbitMQ配置,这样才能订阅更新: # RabbitMQ配置   rabbitmq:     host: 192.168.6.155     port: 5672     username: guest     password: guest     virtual-host: /
  客户端必须修改,refresh、enabled都要改为true,trace是进行跟踪的,可以根据需要开启spring:   cloud:     bus:       enabled: true       refresh:         enabled: true       trace:         enabled: true
  注意点:为了实时更新,必须加上@RefreshScope
  配置中心进行bus refresh
  订阅的客户端都进行实时更新:

深圳深意吉利博越优惠高达1万元福田深圳深意店博越PRO现车限时优惠,可试乘试驾博越PRO现车在店,购车可享多重优惠方案零息方案首付30起2年0息首付45起享3年0息超长期限超低月供方案每天一杯奶茶钱博越PRO贷尼罗河上的惨案发布预告片!神奇女侠领衔演绎震撼心灵的罪案尼罗河上的惨案全球首支先导预告片华丽来袭!全明星卡司阵容演绎推理女王阿加莎克里斯蒂的经典悬疑作品。先导海报同步释出!迷雾笼罩,静待大侦探波洛抽丝剥茧揭晓真相继东方快车谋杀案后,大侦谢娜首次直播卖房,引爆全网你的朋友圈,暴露了你值多少钱01hr近日,谢娜首次开直播。但是在预热阶段,却已经引爆全网,将近百万人为她转发宣传!尤其值得注意的是,为她宣传的除了粉丝,还有非常多的当红流量明星!可谓是谢娜的一场直播首秀,掀起你的人生也许只是真人秀表演看完楚门的世界你大概就能明白黑色幽默的意思。电影主角楚门从出生那一刻起,便开始了一场24小时不间断的真人秀直播,全球220个国家17亿电视观众,5000多台摄像机,所有人都知道那个不负众望!八佰要爆了原定于2019年6月15日上海国际电影节开幕片,后因技术原因取消的八佰。前几天终于点映了。今天就给大家说说我对这部电影的观感八佰导演管虎主演王千源张译姜武黄志忠张俊一类型剧情历史战张柏芝,你还有多少惊喜我不知道?在小编印象中,尔冬升绝对算得上是一位一流导演。比如由他执导的门徒,能让主演刘德华,吴彦祖等人发挥所长不说,而且还顺势燃起了观众对香港电影的期望。所以很多人,也都是通过这部电影才记住Angelababy哭戏登顶热搜,不用眼药水看剧本就落泪流量明星转型演员第一步,便是在演技上获得大众的认可。85后小花Angelababy演技虽然被网友们诟病多年,却依然兢兢业业接戏拍戏,不断尝试新的可能,终于有朝一日靠哭戏上了热搜第一乘风破浪的姐姐,翻车了?发现没?最近乘风破浪的姐姐热度渐渐降下去了。刚开始,每个人都张扬自信姐味十足。到现在迎合观众审美,舞台趋于同化。高开低走。甚至,越来越多人表示乘风破浪的姐姐越来越看不下去了。为什么平均工资7470元?你的工资在青海能去哪里玩?立秋已过,气温明显就降了很多,尤其是早晚趁着最后几天的好天气抓紧时间去浪最近几天全省大部分地方天气晴好,艳阳高照这两天格尔木市最高气温突破30度西宁市的最高气温也是逐步上升青海不同离婚4年,马蓉被求婚你博眼球的样子,真丑1hr与王宝强离婚4年后,马蓉被求婚了!一名男子在自己的社交平台上连发3条视频,公开向马蓉求爱。第一则视频当中,一个身着西裤衬衣,表情肃穆的男子,高举着一块扎眼的红色广告牌表白马蓉国家又发补贴了!及时人力资源社会保障部财政部发布关于扩大失业保险保障范围的通知,阶段性实施失业补助金政策。重磅12020年3月至12月,领取失业保险金期满仍未就业的失业人员不符合领取失业保险金条件的参
索尼全新XR认知芯片及2021新品电视全方位解析索尼海外发布会片头好帅,蜘蛛侠和毒液都出场了,不知道明年上映的毒液2里,会不会出现荷兰弟?言归正传,看到这场发布会,我突然联想到前段时间知乎有个问题,智能电视已经到了需要比拼芯片的微信终于支持多设备同时在线微信8。0。8版本更新中,终于支持多设备同时登录了,但必须遵循手机平板电脑的多设备模式,无法同时在两种同类设备上登录。也就是说,无法同时在手机Mac和Windows上登录。许多网友上班坐久累,站着办公吧,Fitstand升降台体验,值得了解来来来,这次分享的是Fitstand升降台FS1。耀哥经常说任何一款产品都没有最好,只有最适合,那FS1又是适合哪些小伙伴或者使用场景呢?像我这样,键盘习惯放桌面上,导致想要好好打获21年AWE艾普兰多个奖项,莱克究竟有何资格?专注与创新不可分你知道吗?电影界有一个奥斯卡,而家电界其实也有一个奥斯卡,那就是每年中国家电及消费电子博览会(AWE)上,揭晓的艾普兰奖。你以为艾普兰只是一个给钱就能上的野鸡奖项吗?那就错了,从2高颜值能拯救一款车一个品牌吗?大家给爱驰U6把把脉随着新能源车的兴起,汽车市场上涌现出很多以新能源车型为主的造车新势力,比如特斯拉蔚来理想等,不过相比于这几个有名的大厂,爱驰汽车就显得存在感低了些。作为一个新能源品牌,截止到目前,好的无线耳机什么要求?无线耳机市场上好坏掺杂,一般人也不会追求上千块的耳机,选择区间一般在几十块到几百块,那么问题来了什么样的耳机够好?好的耳机有什么讲究?降噪一款耳机首当其冲的一定是降噪,降噪影响你的高考结束,点这!看如何正确备考四六级四六级是国家教育部高等教育司主持的全国性英语考试,考试对象就是在校专科生,本科生或研究生。每年6月份12月份考试,合格线为425,考试成绩一般会在考试结束后的66天左右公布。大家都大学不加入社团学生会,不竞选班委,对以后有影响吗?当你满怀期待的步入大学校园后,发现周围的同学都在忙着参加社团,加入学生会,竞争班干部时,你会不会随波逐流也积极参加呢?又或者犹犹豫豫错过时机呢?今天,小编想和大家聊一聊加入社团学生美图公司梭哈加密货币已亏损1。1亿!加密货币路在何方?半年前,美图公司在2020年底比特币牛市期间高调梭哈比特币,今年4月份美图公司分三次购买了总计1亿美元的加密货币。如今大半年过去了,美图秀秀境况如何呢?在3月下旬报道了美图公司借比三星的下一个GalaxyUnpacked将于8月11日在线发布三星刚刚宣布了今年重量级的活动。但至少这是我们所期待的。该公司刚刚在GalaxyUnpacked发出邀请函,邀请函将于美国东部时间8月11日上午10点开始,但活动将仅在网上直播举行上大学前应该买笔记本还是平板?如果只能二选一的话对于大多数人来说还是推荐先购买笔记本电脑,iPad更像是笔记本电脑的补充平板电脑即使生产力在超前,也是替代不了电脑的,iPad即使配上了键盘和鼠标只适合轻度的办公