Java 模块化通信

jwh199588 · 2024-10-11 22:42:53 · 80 次点击
有没有 java 项目,可以控制服务中模块通信的方式,通过配置去切换使用 springbean 注入的方式调用,还是使用 http 调用,或者是 dubbo 调用;

简单来说就是两个模块,放在一个 war 包的时候,可以通过注入的方式相互调用;把两个模块拆成两个 war 包的时候,就使用 http 调用或者 dubbo 调用
举报· 80 次点击
登录 注册 站外分享
5 条回复  
bugmakerxs 小成 2024-10-11 22:58:13
我前公司有类似需求。当时想的一个方案是 interface 和 impl 不在同一个 module 里,比如有 user-api, user-dubbo-sdk, user-impl, user-http-sdk ,user-api 里放 interface ,各个 sdk 里配置不同的 impl 。maven 打包的时候引入 user-api 和其中某个 sdk 或者 impl 即可实现走本地调用还是远程调用。
lambdaq 小成 2024-10-11 22:59:56
RPC 自动变 LPC ? 不错的想法。
goinghugh 小成 2024-10-11 23:37:08
可以实现,我们就是这么做过。
RPC 框架一般有本地调用以及远程调用,比如 dubbo 或者 sofa ,和 1 楼说的类似;但是要注意进程拆开时,远程调用根据业务可能要额外的处理,比如广播调用、负载均衡策略等。不过实现前最好想清楚你是否真的需要这种模式,因为两种支持分布式的部署,会带来额外的测试、运维、开发等成本,这些投入产出比你需要一下。
wolfie 初学 2024-10-12 09:10:09
feign client 和 controller 用相同抽象。

pom 里根据 dependency 依赖,加载 feignclient 或 controller bean 。

其他 dubbo client 同理。
ZZ74 小成 2024-10-12 14:21:54
同一楼的做法。主项目写接口,依赖注入+默认实现 。额外的 jar 实现接口,提供本地或者远程调用
返回顶部