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

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月26日,记者走访了位于百脑汇的多家手机店了解到,部分品牌折叠屏手机目前缺货。临近春节,手机投影仪电子书阅读器等电子产品迎来销售旺华为Mate50渲染图曝光,星环摄像头,搭载骁龙8芯片关于华为Mate50P60,不少人开始想象了,这些图片均为粉丝根据想象而制。。。不过肯定的是,华为的7款不适合无脑购入的科技产品任天堂Switch游戏机上榜小年已经过去,购置年货已经成了各家各户的首要事件。除了购买各式食品,智能家居手机平板等科技产品也是消费者们比较关注的目标,各大厂商也针对这些用户推出了多项超值福利。虽然看起来很美好一碰就来电,飞科FS925智能剃须刀使用分享前言随着生活水平的提升,电动剃须刀已经非常普及,成为品质生活的必需品,同质化的产品也越来越多,在满足基本功能的情况下,具备个性化且实用功能的产品往往受到用户的青睐。出差时忘充电器,2021年中国手机销量报告出炉vivo第一,荣耀华为打平记者陆柯言1月26日,第三方调研机构CounterPoint发布的中国手机市场报告显示,2021年第四季度,苹果超过vivo,拿下23的市场份额,位居第一。这也是苹果自iPhone不管什么手机,管理好后台自启动运行,再用3年也很流畅可能很多人都不清楚,其实在我们的手机里面有一个功能的存在,只要打开它就可以限制后台的程序运行,瞬间让手机流畅地运行起来。对于安卓手机用户来说,都会遇到一个老大难的问题,就是当手机用苹果回应iPhone13粉屏是软件BUG问题!所以说好的iOS稳定呢?市面上主流的手机操作系统目前就安卓和iOS两种,所以一直以来,网上都存在着谁更好的争议。就两款系统本身的特性来说,安卓和iOS系统是各有优势的,安卓开放对用户更加的友好,而iOS封苹果CEO库克被陌生女子跟踪威胁,声称是其妻子且有孩子1月26日消息,苹果公司声称美国弗吉尼亚州一名女子涉嫌跟踪公司首席执行官蒂姆库克(TimCook),向法庭申请并获得针对这名女子的限制令。据法院文件显示,这名可能携带有武器的女子涉担心熊孩子沉迷游戏?智能手机的儿童空间成管教利器,家长用起来新年将至,眼下正是寒假期间,孩子们看电脑手机的时间一下子增多,不少学生观看电子屏幕时间增长,户外运动时间减少,对视力影响颇深,从而引发了家长们对于孩子近视的担心。所以作为父母也应该构建肿瘤知识图谱体系,CSCOAI要突破肿瘤的全治疗周期我国高质量医疗资源缺乏且分布不均。这对于每年400多万新增的肿瘤患者而言,意味着大量的患者很难获得适合他们的医疗服务。医疗资源分布不均,即使在一线城市也要面临医疗机构难以提供持续性佳能尼康中国关厂,补偿150万!这些人会感恩日本人一辈子吗?会。因为关厂对工厂主和工人都将损失未来,通常工人抗风险的能力更弱。补偿不一定能帮助工人完全克服困难,至少能减轻负担。虽然日本工厂只是按照规定进行的补偿,是应该的。可是比起国内那些平
保险数字化转型升级如火如荼,友邦人寿立于时代转型潮头互联网产业发展如火如荼,金融科技发展方兴未艾。大数据云计算人工智能物联网等新技术正在重塑保险价值链,科技正在重新定义保险新未来。与此同时,以8090后为代表的年轻群体逐渐成为购买保顺顺学党史11月24日顺顺学党史11月24日习近平总书记在党史学习教育动员大会上强调,全党同志要做到学史明理学史增信学史崇德学史力行,学党史悟思想办实事开新局,以昂扬姿态奋力开启全面建设社会主义现代化国家用监控摄像机有哪些妙用?这些隐蔽的功能,你了解多少呢安装家用监控摄像机的好处是什么?不仅仅只是为了安防,最重要的是消除一些潜在的威胁。因为监控摄像机安装在那里就具备威慑的作用,但凡有心做违法或者有违道德事情的,看到监控摄像机心里就发跑步不想带手机,有没好用的智能手表推荐?运动手表品牌不少,仅就我使用两年半以来的佳明645来说,开始配戴3次同时拿手机比较,数据还是准确的,从此一直配戴至今。充满电可跑67个小时,表带弹性好,手表防水效果也好。今年晨跑遇一加10Pro一加10Pro一加10Pro最新上市价格还未公布,随着上市时间的临近,截至目前已有越来越多的外观和配置细节得到确认。现在有最新消息,上市时间为2021年。首先,我们关注屏幕方面,屏传音InfinixINBookX1系列笔记本即将发布下月登场CNMO新闻几个月前,传音旗下的智能手机制造商Infinix通过在菲律宾推出INBookX1系列笔记本电脑,正式进入了笔记本电脑市常现在,该系列笔记本电脑已确认即将在印度推出。In打通科技成果转化最初一公里版权归原作者所有,如有侵权,请联系我们近期,清华大学教师团队的新一代固体氧化物电解池(SOEC)电解水制氢技术产品样机项目,在北京清华工业开发研究院(以下简称清华工研院)概念验证中天猫之困抖音快手强势崛起,阿里系电商的护城河在哪儿?经济导报记者姜旺今年双11,天猫双11成交额首次突破5000亿大关,但增速却从2020年的86,降低至可怜的8。45。而另一方面,拥有海量用户的抖音快手则开始加码电商业务,并高调公工信部指导腾讯,将会有大动作在工信部信息通信发展司的指导下,中国互联网协会和中国信通院组织了首批8家网盘公司共同签署了个人在线磁盘服务业务用户体验保证自律公约,承诺将在2017年内推出无差别速率产品,为各种用所有APP暂停更新?腾讯配合监管部门检测澎湃新闻记者范佳来11月24日,网传腾讯计算机主体旗下所有APP将暂停版本更新,各应用商店和分发平台立即执行。腾讯对澎湃新闻记者回应称,正持续升级APP对用户权益保护的各项措施,并耳朵被炮震聋的,戴助听器有用吗?先要去助听器验配中心做个测听,看看耳朵的残余听力还有多少,再做个言语分辨率测试看看能听懂能听清多少。在根据实际情况试听助听器,看看戴上助听器有多少帮助再选配助听器。您好,耳朵被冤屈