apollo
apollo copied to clipboard
[feature request]支持 profiles
这样可以在特定场景之下,只需要修改一下 active profile,就可以切换一批配置项
- 配置项+profile 作为唯一主键,profile 可以为空
- 可以多个 active profile,类似于 maven 的 profile
profile功能现在可以通过指定集群实现,具体可以参考客户端集群设置
@nobodyiam 感谢这么快速回复
我说的 profile 跟集群的这个 profile 好像不是一个概念,既然 apollo 已经有了 profile 这个概念,那我就把他重新起个名字,比如叫 GROUP。
这样,我的线上环境有很多项配置可以分到不同的 group 里面, 比如 busy(访问量比较大), normal(平常),free(访问量很小) , festival(过节)
大部分的配置项可能跟这几个 group 无关,所以他们的 group 都是空
有一小部分配置项跟这些group 有关
比如 cache.ttl+busy=1000, cache.ttl+normal=100, cache.ttl+festival=10 logo+festival=happy, logo=normal
这样,我可以配置 active group(可多选,但是同一维度的不要多选),比如 busy, festival 两个 group 是 active 的,那客户端得到的值就是 cache.ttl=1000,logo=happy
你这个其实就是spring cloud config的profile概念吧,Apollo中对应的概念其实就是集群,只是apollo的集群只有一个
其实你这个需求可以通过不同的namespace来实现,分别创建多个namespace。
busy:
- cache.ttl=1000
normal:
- cache.ttl=100
festival:
- cache.ttl=10
- logo=happy
application:
- logo=normal
然后如果客户端要使用busy, festival的话,就配置@EnableApolloConfig({"busy", "festival", "application"}),就能实现客户端得到的值就是 cache.ttl=1000,logo=happy
我个人理解配置管理系统之所以这么重要,就是可以非常轻松的通过修改一下配置就可以做到以前需要修改代码、编译、部署、上线才能完成的事情。
如果按照您说的方案,那我还是需要改代码、上线等过程。
如果能够直接在 apollo 系统里面改一下 active group,就能切换一批线上服务器的配置的话,那多轻松 devops 的实现不也更近了一步吗:)
搞了半天,你这个feature request提的还是服务端的能力,前面一直理解为客户端的能力。。
所以,其实是类似于在服务端做多个namespace的聚合,然后可以随时调整聚合规则,这是一个不错的想法,之前我们也有考虑过。
谢谢,期待中!