如何实现动态标签路由呢
MingJunDuan opened this issue · 6 comments
Your question
应用在运行时,不停机给provider打标签,之后consumer通过自定路由Router实现动态标签路由,consumer端自定义Router有文档(https://www.sofastack.tech/projects/sofa-rpc/custom-router/),但是provider端怎么实现呢,有没有demo或者文档
describe your question clearly
Your scenes
describe your use scenes (why need this feature)
Your advice
describe the advice or solution you'd like
Environment
- SOFARPC version:
- JVM version (e.g.
java -version
): - OS version (e.g.
uname -a
): - Maven version:
- IDE version:
可以让 provider 修改传递给注册中心的元数据,让 consumer 发现. 一般来说,这种元数据是provider 启动的时候就已经决定好的. 如果要不停机修改, 需要修改 registy 的实现, 或者引入第三方数据源.
我们内部已经 mesh 化了,当在服务治理中心下发动态打标规则的时候,通过 mosn append 上动态标,并重新 repub 到注册中心来实现。可以考虑集成一个重新 repub 的方案,或者服务治理中心直接修改注册中心数据。
使用sofaboot,重写ProviderConfigContaner.addProviderConfig(),ProviderConfig.setParameter()进行设置,可以实现应用启动时将标签注册到注册中心,但感觉不是太优雅,不停机更换provider标签暂没找到解决方法,大家有其他好的解决方式可以讨论。
我的思路是元数据应该是注册中心去管理,进行更新,客户端去拉取元数据配置
可以根据nacos元数据进行动态更新,直接在页面进行操作,应该也有接口可以调用更改nacos元数据
我了解到的如果是k8s的标签应该是打进镜像里面的,不好改,具体是什么场景需要动态修改标签呢
建议先补充下这个需求的场景再来评估方案