springcloud config配置中心搭建

一、为什么使用配置中心:

对于一些简单的项目来说,我们一般都是直接把相关配置放在单独的配置文件中,以 properties 或者 yml 的格式出现,更省事儿的方式是直接放到 application.properties application.yml 中。

  • 安全性:配置跟随源代码保存在代码库中,容易造成配置泄漏
  • 时效性:修改配置,需要重启服务才能生效

配置中心Apollo(阿波罗)、Spring Cloud Config解决了以上问题

.SpringCloud Config配置中心

1、简单的配置中心:

不需要集成MqSpringCloud Bus等,如果只有一个 client 端的话,那我们用 webhook ,设置手动刷新都不算太费事,但是如果端比较多的话呢,一个一个去手动刷新未免有点复杂。

2SpringCloud Config + Bus + RabbitMq配置中心

可以借助 Spring Cloud Bus 的广播功能,让 client 端都订阅配置更新事件,当配置更新时,触发其中一个端的更新事件,Spring Cloud Bus 就把此事件广播到其他订阅端,以此来达到批量更新。

Spring Cloud Bus 核心原理其实就是利用消息队列做广播,所以要先有个消息队列,目前官方支持 RabbitMQ kafka

三、SpringCloud Config + Bus + RabbitMq配置中心搭建

1、搭建eureka注册中心:

2SpringCloud Config服务端:

【1】引入config和bus组件

 

【2】启动类使用@EnableConfigServer注解

 

【3】application.yml文件配置rabbitmq和git仓库

 

配置RabbitMQ是因为bus组件需要使用它来通知客户端

3. 客户端接入配置中心

【1】引入依赖

 

【2】配置RabbitMQ和引入配置中心的url

RabbitMQ配置可以放在git上,需要和config服务端保持一致

 

注意点:spring cloud config相关的配置一定一定要放到bootstrap.properties/yml里,否则还是会取本机的8888端口;

如果在Java类里有读取配置文件的地方,需要在类上加@RefreshScope

4.修改配置文件,验证是否自动刷新

【1】修改配置文件,并提交git

 

    提交后,调用url接口发现,值并没有刷新,那是因为push到git的这个动作做完后,我们没有通知到spring cloud bus。可以使用postman来做一个post请求,调用如下接口,来通知bus。--config服务ip:端口号/bus/refresh

http://localhost:8192/bus/refresh

这个接口一旦调用成功,bus会利用RabbitMQ通知所有的客户端,配置已经更新。

如果每次提交,都要去调用服务端的/bus/refresh接口,那这个也太麻烦了。可以使用webhook来帮一下忙。
进入gitlab,在工程里面,点击【Settings】,再点击【Integrations】,就可以设置webhook了,如下图
url里面填入配置中心服务端的/bus/refresh接口地址,然后点击【添加Webhook】就可以了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值