如何使用分布式配置中心
这里是修真院后端小课堂,每篇分享文从 【背景介绍】【知识剖析】【常见问题】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】 八个方面深度解析后端知识/技能,本篇分享的是: 【如何使用分布式配置中心】 大家好,我是IT修真院深圳分院第十一期学员,一枚正直纯洁善良的JAVA程序员。 今天给大家分享一下,修真院官网JAVA任务十的一个知识点:如何使用分布式配置中心? 1? ? 背景介绍 1.1? ? SpringCloud简介 springCloud是基于SpringBoot的一整套实现微服务的框架。他提供了微服务开发所需的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等组件。 SpringBoot旨在简化创建产品级的 Spring 应用和服务,简化了配置文件,使用嵌入式web服务器,含有诸多开箱即用微服务功能 2? ? 知识剖析 2.1? ? 什么是分布式配置中心? 在微服务架构的系统中,使用一个统一的微服务进行配置文件的加载,由这个微服务向其他服务提供配置文件,这个微服务就是配置中心。 2.2? ? 什么是SpringCloudBus? Spring cloud bus即SpringCloud框架的消息总线。其本质是利用了MQ的广播机制在分布式的系统中传播消息,目前常用的有Kafka和RabbitMQ。利用bus的机制可以做很多的事情,其中配置中心客户端刷新就是典型的应用场景之一。 2.3? ? 使用SpringCloudBus实现自动更新配置的步骤有哪些? 1)? ? 设置配置中心,config-server,从git获取配置信息; 2)? ? 在service中调用config-server中的相关配置; 3)? ? 在service中导入SpringCloudBus相关依赖,配置RabbitMq; 4)? ? 在需要刷新配置的Controller上添加@RefreshScope注解 5)? ? 在GitHub上配置WebHook,设置更新properties文件后向config-server发送post请求。 3? ? 常见问题 如何使用SpringCloudBus实现自动更新配置 4? ? 解决方案 1、见编码实战 5? ? 编码实战 config-server的yml配置 server: ? port: 8091 eureka: ? instance: ? ? prefer-ip-address: true ? client: ? ? registerWithEureka: true ? ? fetchRegistry: true ? ? serviceUrl: ? ? ? defaultZone: http://localhost:8090/eureka/ spring: ? ? application: ? ? ? ? name: config-server ? ? cloud: ? ? ? ? config: ? ? ? ? ? server: ? ? ? ? ? ? git: ? ? ? ? ? ? ? uri: https://github.com/ ? ? ? ? ? ? ? search-paths: respo ? ? ? ? ? label: master ? ? ? ? bus: ? ? ? ? ? enabled: true ? ? ? ? ? trace: ? ? ? ? ? ? enabled: true ? ? rabbitmq: ? ? ? host: localhost ? ? ? port: 5672 ? ? ? username: guest ? ? ? password: guest management: ? endpoints: ? ? web: ? ? ? exposure: ? ? ? ? include: bus-refresh service的yml配置 server: ? port: 8081 spring: ? ? application: ? ? ? ? name: service-hi ? ? cloud: ? ? ? bus: ? ? ? ? enabled: true ? ? ? ? trace: ? ? ? ? ? enabled: true ? ? ? config: ? ? ? ? lable: master ? ? ? ? profile: dev ? ? ? ? uri: http://193.112.45.68:8091/ ? ? rabbitmq: ? ? ? host: 193.112.45.68 ? ? ? port: 5672 ? ? ? username: guest ? ? ? password: guest eureka: ? client: ? ? registerWithEureka: true ? ? fetchRegistry: true ? ? serviceUrl: ? ? ? defaultZone: http://193.112.45.68:8090/eureka/ ? instance: ? ? hostname: localhost import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class Hello { ? ? @Value("${type}") ? ? private String type; ? ? @RequestMapping(value = "/hello") ? ? public String te() { ? ? ? ? return type ; ? ? } } import org.springframework.beans.factory.annotation.Value; import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RefreshScope public class Hi { ? ? @Value("${type}") ? ? private String type; ? ? @RequestMapping(value = "/hi") ? ? public String te() { ? ? ? ? return type ; ? ? } } 6? ? 扩展思考 7? ? 参考文献 CSDN、百度百科 8? ? 更多讨论 8.1? ? @RefreshScope的作用是什么? ?该注解用来标注需要刷新的类,只有加上了这个注解,才会对这个类所引用的配置进行刷新。 8.2? ? 服务注册中心、服务配置中心和具体的服务模块是不是必须要放在同一个服务器上? 不需要,只需要在yml文件中指定地、开放相关的端口即可。 8.3? ? GitHub的webHook功能如何配置? 1)? ? 找到连接的库,打开Setting页面; 2)? ? 选择webHook,新增webhook; 3)? ? 填写发送POST请求的地址及何时发送POST请求 技能树.IT修真院? ? ? “我们相信人人都可以成为一个工程师,现在开始,找个师兄,带你入门,掌控自己学习的节奏,学习的路上不再迷茫”。 ? ?这里是技能树.IT修真院,成千上万的师兄在这里找到了自己的学习路线,学习透明化,成长可见化,师兄1对1免费指导。 快来与我一起学习吧~http://www.jnshu.com/login/1/24864700 腾讯视频:https://v.qq.com/x/page/c0719197opo.html PPT链接?视频链接 更多内容,可以加入IT交流群565734203与大家一起讨论交流 这里是技能树·IT修真院:,初学者转行到互联网的聚集地 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |