天天看点

Spring Cloud(六)《基于github webhook动态刷新服务配置》

微信公众号:bugstack虫洞栈 沉淀、分享、成长,专注于原创专题案例,以最易学习编程的方式分享知识,让自己和他人都能有所收获。目前已完成的专题有;Netty4.x实战专题案例、用Java实现JVM、基于JavaAgent的全链路监控、手写RPC框架、架构设计专题案例[Ing]等。

在实际开发中经常会有一个叫做配置中心的服务,这个服务经过变更参数来动态刷新线上业务数据行为配置。比如;行为开关、活动数据、黑白名单、本地/预发/线上环境切换等等,这些配置信息往往需要在我们不重启系统的时候就可以被更新执行。那么我们一般会使用具备此类属性在分布式系统中适合的组件进行开发配置中心,像是zookeeper、redis发布订阅、或者http定时轮许拉取,他们都可以做成统一配置中心服务。而在Spring Cloud Config 中,默认采用 Git 来存储配置信息,所以使用 Spring Cloud Config 构建的配置服务器,天然就支持对微服务应用配置信息的版本管理,在加上Github的Webhook钩子服务,可以在我们push等行为操作的时候,自动执行我们的http行为,以达到自动刷新配置服务。

jdk 1.8、idea2018、Maven3

Spring Boot 2.0.6.RELEASE

Spring Cloud Finchley.SR2

需要有一个Git帐号,用来创建配置中心以及开启Webhooks服务,添加回调

通过在个人Git创建配置服务工程,开启Webhooks服务添加回调钩子http://xxx:port/actuator/refresh在更新配置后自动刷新服务配置内容,如图;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9dT8z67X-1573801291240)(https://bugstack.cn/assets/images/pic-content/2019/11/springcloud-6-1.png)]

完整代码欢迎关注公众号:bugstack虫洞栈 回复“SpringCloud专题”进行下载

web/ConfigClientController.java & 添加注解@RefreshScope自动刷新配置
ConfigClientApplication.java & 普通配置即可
application.yml & 需要配置endpoints,这样才可以暴漏刷新服务
bootstrap.yml & 配置中心服务配置,http://localhost:7397
ConfigServerApplication.java & 添加注解@EnableConfigServer设置成配置服务中心
application.yml &

准备好自己Github的配置仓库,也可以克隆我的Git;https://github.com/fuzhengwei/itstack-demo-config {有一组配置配置文件}

配置Webhooks,在https://github.com/换你自己的fuzhengwei/换你自己的itstack-demo-netty/settings/hooks/new

分别启动服务

itstack-demo-springcloud-config-server 配置Server

itstack-demo-springcloud-config-client 配置Client

访问配置服务,端口7397;http://localhost:7397/config-client/dev

访问结果

访问规则{配置文件会被转换成 Web 接口,规则如下}

/{application}/{profile}[/{label}]

/{application}-{profile}.yml

/{label}/{application}-{profile}.yml

/{application}-{profile}.properties

/{label}/{application}-{profile}.properties

访问配置文件;http://localhost:8080/config-client-dev.yml {可以直接访问查看配置信息}

访问使用配置的客户端,端口9001;http://localhost:9001/config {可以提交配置代码反复刷新测试}

Spring Cloud Config 可以很方便的依赖于Github提供的回调钩子进行更新配置,同时也支持本地配置

Webhooks 不止可以用于变更配置,还可以用于一起启动触发工程打包部署发布的行为

不要局限于知识点,往往每一个新知识所带来的架构设计更值得学习,这些都可以灵活的用于项目系统中

Spring Cloud(六)《基于github webhook动态刷新服务配置》

继续阅读