有没有 java 项目,可以控制服务中模块通信的方式,通过配置去切换使用 springbean 注入的方式调用,还是使用 http 调用,或者是 dubbo 调用;
简单来说就是两个模块,放在一个 war 包的时候,可以通过注入的方式相互调用;把两个模块拆成两个 war 包的时候,就使用 http 调用或者 dubbo 调用
1
bugmakerxs 43 天前
我前公司有类似需求。当时想的一个方案是 interface 和 impl 不在同一个 module 里,比如有 user-api, user-dubbo-sdk, user-impl, user-http-sdk ,user-api 里放 interface ,各个 sdk 里配置不同的 impl 。maven 打包的时候引入 user-api 和其中某个 sdk 或者 impl 即可实现走本地调用还是远程调用。
|
2
lambdaq 43 天前
RPC 自动变 LPC ? 不错的想法。
|
3
goinghugh 43 天前
可以实现,我们就是这么做过。
RPC 框架一般有本地调用以及远程调用,比如 dubbo 或者 sofa ,和 1 楼说的类似;但是要注意进程拆开时,远程调用根据业务可能要额外的处理,比如广播调用、负载均衡策略等。不过实现前最好想清楚你是否真的需要这种模式,因为两种支持分布式的部署,会带来额外的测试、运维、开发等成本,这些投入产出比你需要一下。 |
4
wolfie 43 天前 via Android
feign client 和 controller 用相同抽象。
pom 里根据 dependency 依赖,加载 feignclient 或 controller bean 。 其他 dubbo client 同理。 |
5
ZZ74 42 天前
同一楼的做法。主项目写接口,依赖注入+默认实现 。额外的 jar 实现接口,提供本地或者远程调用
|