/(ㄒoㄒ)/~~ 还有好多要学鴨
cloud config
- 分布式面临的系统配置问题,如何解决
- 分为服务端配置与客户端配置
- 客户端不能自动更新git上的配置
分布式面临的系统配置问题,如何解决
1. 分布式系统面临的配置问题
微服务意味着要将单体应用中的业务拆分成一个个子服务, 每个服务的粒度相对较小,
因此系统中会出现大量的服务。
由于每个服务都需要必要的配置信息才能运行,所以一套集中式的、
动态的配置管理设施是必不可少的。
SpringCloud提供了ConfigServer来解决这个问题,
我们每一个微服务自 己带着一个application.yml, . 上百个配置文件的管理...
/(ToT)/~~2. SpringCloud Config为微服务架构中的微服务提供集中化的外部配置支持,
配置服务器为各个不同微服务应用的所有环境提供了一个中心化的外部配置。3. SpringCloud Config分为服务端和客户端两部分。
服务端也称为分布式配置中心,它是一 个独立的微服务应用,
来连接配置服务器并为客户端提供获取配置信息,加密/解密信息等访问接口。客户端则是通过指定的配置中心来管理应用资源,
以及与业务相关的配置内容,并在启动的时候从配置中心获取和加载配置信息。配置服
务器默认采用git来存储配置信息,这样就有助于对环境配置进行版本管理,
并可以通过git客户端工具来方便的管理和访问配置内容。
架构图:config server(微服务) 从git库获取配置信息,客户端来取。
能干嘛:
1. 不同环境不同配置,动态化的配置更新,分环境部署比如dev/test/prod/beta/release
2. 运行期间动态调整配置,不再需要在每个服务部署的机器上编写配置文件,服务会向配置中心统一拉取配置自己的信息
3. 当配置发生变动时,服务不需要重启即可感知到配置的变化并应用新的配置
4. 将配置信息以REST接口的形式暴露 (postman、curl访问刷新均可....)
推荐与GitHub使用,更香。
https://cloud.spring.io/spring-cloud-static/spring-cloud-config/2.2.1.RELEASE/reference/html/
分为服务端配置与客户端配置
服务端用来获取git仓库上的配置信息,客户端读取服务端的配置信息。
将配置信息用一个微服务抽出来。
code in my github repo.. fork, star or clone, you determine it..
客户端不能自动更新git上的配置
需要注意的问题。
1. 当git上的配置信息更新后,配置中心服务端能及时获取到配置信息,客户端也能。
更新git,客户端获取不到配置信息,需要重启client重新获取。2. 客户端新增@RefreshScope注解,启动服务端和客户端可以获取到配置信息,
但是更新git上的配置后,客户端还是获取不到配置信息。3. 需要发送post请求 curl -X POST "http://localhost:clientPort/actuator/refresh" 重新获取配置信息。4. 第三步的操作麻烦,每次更新配置,我都需要发送请求,我有100台微服务,
我得找到对应得100个端口... 手动refresh, hhh..
如何解决微服务收到配置信息呢,而且自动化的收到消息,定制化的通知到对应的机器。
spring cloud bus消息总线来解决。集成消息中间件帮我发消息。来进行配置的变更。
再说.jpg。