视频学习地址:https://www.bilibili.com/video/BV18E411x7eT
源码地址:https://gitee.com/zhu_xinmiao/springcloud
spring cloud版本:H版
Config控制中心搭建
-
写pom
主要新增以下依赖:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactId> </dependency>热部署可根据自己的需求选择加或不加:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency> -
配yml
server: port: 3344 spring: application: name: cloud-config-center cloud: config: server: git: uri: https://gitee.com/zhu_xinmiao/Springcloud-Config.git #gitee上的git仓库名 search-paths: - springcoud-config #读取分支 label: master eureka: client: service-url: defaultZone: http://localhost:7001/eurekagitee仓库里的配置文件如果不修改,直接填别人的地址也是可以访问的,但后续如果需要自己修改配置内容,则还是需要自己建一个仓库来修改。
-
建git仓库(主要是git方面的操作,不是这次学习的重点)
我是fork了https://gitee.com/exclusiver/springcloud-config这位大佬写好的代码,然后本地仓库clone了一下,再上传到自己的gitee仓库。
本地上传可以参考https://blog.youkuaiyun.com/sclibingqing/article/details/81179470。
在上传的过程中,最后一步push我始终没有反应,研究很久也没弄懂,最后直接强制上传git push -u origin2 master -f
origin2 是我自己改的名字,一般都是origin。
-
写主启动类
@SpringBootApplication @EnableConfigServer public class ConfigCenterMain3344 { public static void main(String[] args) { SpringApplication.run(ConfigCenterMain3344.class); } } -
修改hosts文件(也可不修改,访问时对应的域名用localhost替代即可)
127.0.0.1 config-3344.com
-
访问http://config-3344.com:3344/master/config-dev.yml,得到配置文件中的信息即代表配置成功。
-
另一种访问形式
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-j9CLmMpy-1596513748268)(../Gateway/image-20200804092444603.png)]](https://i-blog.csdnimg.cn/blog_migrate/8a1f2b37550c0bd19f04b7a51c511669.png)
默认访问的分支是yml中配置的分支
#读取分支 label: master-
第三种访问形式,分支写在最后面,返回的是json字符串形式,需要自己解析。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PbVY1acG-1596513748272)(../Gateway/image-20200804092826315.png)]](https://i-blog.csdnimg.cn/blog_migrate/f4b808710cdf485283cba1f94d15e635.png)
-
-
总结
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CGxPUPPK-1596513748275)(../Gateway/image-20200804092913141.png)]](https://i-blog.csdnimg.cn/blog_migrate/1553e7976e16b1daf34f879fdebfe6eb.png)
Config客户端配置和调试
-
写pom,新引入以下依赖,注意没有server
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-config</artifactId> </dependency> -
写yml,这里用到了bootstrap.yml
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f0GMx7L6-1596513748276)(../Gateway/image-20200804104342114.png)]](https://i-blog.csdnimg.cn/blog_migrate/beb92b40c25dd20fe77d9cc9611b27e2.png)
server: port: 3355 spring: application: name: config-client cloud: config: label: master name: config profile: dev uri: http://localhost:3344 # 上述四个综合将会拼成http://config-3344.com:3344/master/config-dev.yml eureka: client: service-url: defaultZone: http://localhost:7001/eureka -
主启动类
@SpringBootApplication @EnableEurekaClient public class ConfigClientMain3355 { public static void main(String[] args) { SpringApplication.run(ConfigClientMain3355.class); } } -
controller类,去访问yml配置文件中的内容,去读取3344
@RestController public class ConfigClientController { @Value("${config.info}") private String configInfo; @GetMapping("/configInfo") public String getConfigInfo(){ return configInfo; } } -
测试http://localhost:3355/configInfo,看是否能得到对应的3344gitee中的内容。
-
但这还存在着以下问题:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VBqEGi00-1596513748278)(../Gateway/image-20200804113756377.png)]](https://i-blog.csdnimg.cn/blog_migrate/b018799b454c2f1e57d8e153381fcdde.png)
Config动态刷新
-
加入以下依赖,这个依赖表示我这个微服务能被别人监控
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> -
修改yml,暴露监控端口
# 暴露监控端点 management: endpoints: web: exposure: include: "*" -
业务类加上注解@RefreshScope,它具备刷新功能
-
gitee上修改version后发现不重启3355的情况下仍然没有刷新,是因为这里需要运维发一下post请求去刷新一下客户端,这时不用重启微服务就能动态刷新,模仿运维的测试命令如下:
- 打开cmd,输入curl -X POST “http://localhost:3355/actuator/refresh”
这时再去刷新3355,在没有重启的情况下,版本也能对应gitee中的version进行刷新。
总结
总的来说,config为微服务提供了一个外部配置的渠道,而不用频繁的修改yml。但是尽管引入了动态刷新方法,当有多个配置客户端要调取3344时,那就需要多次发送post请求,并且,如果利用编写脚本循环来发送,对于精确选择部分客户端更新有很大的困难。
这就引出了下一部分要学习的内容,bus消息总线。
本文详细介绍了如何使用Spring Cloud Config搭建配置中心,包括控制中心的搭建、客户端配置和动态刷新机制。通过实际操作步骤,展示了如何实现外部配置管理,避免频繁修改yml文件,同时介绍了动态刷新的方法,使配置更改无需重启服务即可生效。
1719

被折叠的 条评论
为什么被折叠?



