-
-
Notifications
You must be signed in to change notification settings - Fork 10.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
2.1.0版本,非 properties 格式的公共配置文件如yml的继承是否依然是在整个文件内容粒度进行,如果是请明确告知用户 #5109
Comments
嗨,@SSJSIAT!很高兴再次看到你在这里提出问题。希望你今天过得不错! 根据我在Apollo仓库中的查找,Apollo在处理非properties格式配置文件(如yml)的继承时,确实是在整个文件内容粒度进行的。这是通过关联类型(继承类型)的Namespace实现的。关联类型的Namespace从公共类型的Namespace继承,并用于覆盖公共Namespace的某些配置。这种机制允许在粒度级别继承和覆盖配置,包括非properties格式文件,如XML,YAML,JSON等。 例如,如果公共Namespace有配置:
应用程序有一个关联类型的Namespace,它用新值
这展示了Apollo如何支持在文件内容粒度级别继承和覆盖配置,包括非properties格式。你可以在Apollo核心概念 - Namespace中找到更多信息。 关于Apollo 2.1.0版本和最新版本2.2.0在处理非properties格式配置文件的继承方面的差异,我没有在仓库中找到明确的答案。但是,从2.1.0版本到最新的2.2.0版本,对非properties格式配置文件的处理做出了一些改变,例如为非properties namespaces支持灰度特性。 对于你提到的问题,如果非properties格式的公共配置文件,继承依然是在整个文件内容粒度进行,我同意应该明确告知用户,并将相关case也表示出来。这将有助于用户更好地理解和使用Apollo。 Sources
|
目前确实是这样的逻辑,对于用户的提示是否有啥建议? |
当前提示不友好的点有2个: |
很好的建议,如果有兴趣的话,欢迎直接提交 PR~ |
请问什么时候能支持非properties的继承合并功能, 目前如果公共配置是json格式,内容为 { “k1": "a”, "k2":"b"} , 如果在覆盖配置中定义了{"k1":"c“}, 那么其实整个公共配置就都丢失了,只得到了{"k1":"c“}的结果(k2丢失了), 这种情况下一旦使用了覆盖配置, 继承就失去意义了。 |
描述bug
#3815
1.能够支持创建公共的 xml json yaml 等非 properties 格式 namespace,以及 Java 客户端能够以类似获取公共的 properties 格式的 namespace 的方法获取这些公共 namespace。
2.实现继承功能,因非 properties 格式本身不支持键值粒度的操作,继承将在整个文件内容粒度进行。
当前现象:非 properties 格式的公共配置文件,继承将在整个文件内容粒度进行。
(1)假设该公共配置文件有10个配置,如果继承该公共配置文件,继承只覆盖其中1个配置,那么公共配置文件中的其余配置均不会生效
(2)假设该公共配置文件有10个配置,如果继承该公共配置文件中的所有配置,再把继承的配置全部删除,公共配置文件的配置依然读取不到,类似#4777
在UI界面的描述中并没有让用户感知到这点,给用户带来问题和困扰
期望
如果非 properties 格式的公共配置文件,继承依然是在整个文件内容粒度进行,请明确告知用户,并将相关case也表示出来
额外的细节和日志
The text was updated successfully, but these errors were encountered: