首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

第八章:分布式配置中心的服务化及动态刷新

前言

上一章节,简单介绍了分布式配置中心 的使用。同时,我们也遗漏了一些问题,比如如何配置实时生效,当服务端地址变更或者集群部署时,如何指定服务端地址?回想,在服务注册章节,服务提供者和服务消费者,同时往注册中心进行注册和获取服务地址,而本身注册中心又支持高可用配置。所以,对于配置中心,我们也可以将 和 往注册中心进行注册,借此实现配置中心的服务化,无需指定具体的ip地址,直接根据服务名称进行调用。

关于高可用

Server端

Client端

refresh实现刷新

参考资料

总结

最后

老生常谈

前言

关于高可用

将配置中心服务化,本身是为了实现高可用。而实现高可用的手段是很多的,最常用的就是 。客户端不直连服务端,而是访问 服务,由 来动态选择需要访问的服务端。只是 天然的就能进行服务化配置,所以,实际中可以根据实际的业务需求来进行合理化抉择的。

其次,对于使用了 或者 作为存储方式时,本身配置仓库的高可用也是一个需要考虑的事项。本身如 或者 这些第三方 仓库而言,已经实现了高可用了。但一般上部署的微服务都是内网服务,所以一般上是使用如 开源的 仓库管理系统进行自建,此时就需要考虑本身仓库的高可用了。

注意:本身教程为了不混淆各知识点,所以都是独立项目进行实例,而不是在原工程上进行修改。本章节教程采用了多模块工程进行构建实例。父类项目名为: 。同时创建服务化的配置文件: 和

Server端

创建子工程:

0.加入pom依赖。

1.配置文件加入注册中心相关配置。

2.启动类加入 和 ,前者开启服务发现功能,后者声明一个 。

3.启动应用,同时启动 服务端。访问下 服务端地址:http://127.0.0.1:1000/ ,可以看见服务注册成功了。

访问:http://127.0.0.1:15678/my-config-client-ha-dev.properties 可以看见配置信息了。

Client端

创建子工程:

0.加入pom依赖。

配置文件修改, 添加注册中心配置。

注意:注册中心的相关配置需要放在 中,这样才能利用注册中心进行服务端服务地址获取。

2.启动类,加入 ,开启服务发现功能。

3.创建控制层,测试配置参数。

4.启动应用。一般上应用能启动成功,就说明服务化已经成功了。启动时,可以看见已经往注册中心去获取服务端地址了。

此时,我们访问:http://127.0.0.1:15666/ ,即可看见配置信息返回了。

refresh实现刷新

在默认情况下,客户端是不会自动感知配置的变化的。此时,我们可以使用 端点来进行配置更新。现在,我们改造下客户端。0.加入端点依赖。

1.修改下变量使用类,加入 注解,标记在访问 时,进行变量的更新操作。

重点就是注解 了。2.配置文件开启端点 。这里需要注意, 之后,默认只开启了端点 、 。其他的需要通过 进行额外配置。

3.启动应用,此时,动态修改下远程仓库的参数值为: ,使用 使用 访问: 。

返回值即为有变动的参数值。

再次访问:http://127.0.0.1:15666/ 可以看见已经是最新的配置参数值了。

参考资料

https://cloud.spring.io/spring-cloud-static/Finchley.SR1/single/spring-cloud.html#springcloud_config

https://cloud.spring.io/spring-cloud-static/Finchley.SR1/single/spring-cloud.html#refresh-scope

总结

本章节主要讲解了如何将配置中心注册为一个服务,客户端像普通的服务消费者一样,根据服务名即可获取服务端地址,进而进行参数的获取。同时讲解了当属性参数有变时,客户端如何进行感知变化进行参数动态更新。大家应该可以想到,当我们客户端越来越多时,一个个去执行 时不太现实的,虽然我们可以通过类似 功能当有提交记录时,主动去触发各客户端的 方法,在前期项目比较少的情况下,不失为一个好方法,只需要维护一份待更新的客户端地址列表即可。但当服务越来越多时,维护此列表也是令人头疼的。此时,我们可以使用 消息总线进行通知。由于目前 知识点尚未开始讲解,同时作者也比较少使用消息总线,所以待查阅相关之后介绍 章节时,再来进行讲解如何使用 进行全自动的配置更新操作。

最后

目前互联网上大佬都有分享 系列教程,内容可能会类似,望多多包涵了。原创不易,码字不易,还希望大家多多支持。若文中有错误之处,还望提出,谢谢。

老生常谈

个人QQ:

微信公众号:

源码示例:https://github.com/xie19900123/spring-cloud-learning

系列

如果你觉得文章不错,欢迎点赞分享到朋友圈

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181011G0DIQV00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券