sofastack / sofa-rpc

SOFARPC is a high-performance, high-extensibility, production-level Java RPC framework.
https://www.sofastack.tech/sofa-rpc/docs/Home
Apache License 2.0
3.82k stars 1.17k forks source link

框架自带的扩展点与用户定义的扩展点容易冲突 #1210

Closed crazyStar00 closed 2 years ago

crazyStar00 commented 2 years ago

框架自带的扩展点目录和用户自定义的扩展点目录都为:META-INF/service/sofa-rpc/,在打fat包时容易出现覆盖的问题,虽然,可以修改打包策略,避免该问题,但如果两个路径分开,可能会更好

JervyShi commented 2 years ago

@crazyStar00 rpc-config 支持两种路径配置:sofa-rpc/rpc-config.jsonMETA-INF/sofa-rpc/rpc-config.json,每个 jar 里的这个文件都可以被读到,并且根据配置的 order 来决定覆盖关系,你说的场景是把 RPC 的 jar shaded 掉么?

OrezzerO commented 2 years ago

我遇到过覆盖的情况, 打包的时候, 有些扩展配置文件没有了. 原因是打包方式有问题, 不同的 META-INF/service/sofa-rpc/ 文件被打包到同一个地址, 导致同名文件只会保留一个.

两个路径分开可以缓解这个问题, 但是不能从根本上解决. 因为实际开发中, 有不同的用户会使用扩展点,这些不同用户的扩展点也会相互覆盖.

为了帮助更多同学, @crazyStar00 是否原因分享下你错误的打包配置 以及 修复后的打包配置呢?

crazyStar00 commented 2 years ago

处理前:

image

处理后:

image

处理办法:

image

之前使用过dubbo: 它将框架内部的扩展点放在:META-INF/dubbo/internal下,用户自定义的扩展点放在META-INF/dubbo下,这样就避免了该问题,咱们是不是可以采用类似的方式呢?

stale[bot] commented 2 years ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.