不是讲它的实现, 而是大概的理解它是什么, 在工作中有什么用.
开源的配置系统有哪些
ctrip apollo, QConfig,spring-cloud/spring-cloud-config
配置系统是什么
简单的说, 我们可以把它看作是一张配置表, 维度有配置名, 配置值, APPID, 机器IP, 描述等等字段. 根据配置名,APPID,机器IP获取配置值,解析成想要的格式,boolean或字符串等进行使用。
他可以做什么
- 当开关使用. 这样发布上线的时候你可以把你的配置在测试环境配置为true, 从而验证新逻辑, 真正发布过程中关闭开关,
这样就算验证有问题也不会阻断发布, 把开关关闭即可. 而且如果应用比较大, 发布过程长, 保持旧逻辑上线也不会引起不一致, 导致应用出现问题. (比如第一个请求打在未发布的机器上, 后续请求打上已发布的新机器上, 如果新旧逻辑结果有差异, 这样就会导致结果不一致, 导致用户投诉)
if (getConfig("Config1")) {
// 新逻辑
} else {
// 旧逻辑
}
- 便于功能拓展.
case1: 一个产品做了一个功能, 如果其他产品也要有相同功能, 如果没有配置, 我们需要改动代码才能是实现, 而有了配置, 我们在配置中增加产品, 就可以动态的拓展.(需要前期代码支持).
case2: 黑名单, 某个产品不能参与某个功能, 如果没有配置, 我们也需要改动代码, 而有了配置我们配置对应产品就能实现. - 灰度
一个功能发布, 有可能只在不常见的情况下发生错误, 我们可以增加IP使配置在一部分机器上生效, 这样监控发现问题后影响较小.
比如1台机器, 10台, 全开, 有问题回退配置.
这里也要注意不要过度灰度, 灰度时间过长或者灰度机器较少导致监控不能马上发现问题, 使问题在生产影响较长. - 增加灵活性, 比如你网站的slogan,你没想好或是后面想要变动,都可以放进配置,灵活更改。
后续想起再更新...
网友评论