V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
jwh199588
V2EX  ›  程序员

Java 模块化通信

  •  1
     
  •   jwh199588 · 66 天前 · 1277 次点击
    这是一个创建于 66 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有没有 java 项目,可以控制服务中模块通信的方式,通过配置去切换使用 springbean 注入的方式调用,还是使用 http 调用,或者是 dubbo 调用;

    简单来说就是两个模块,放在一个 war 包的时候,可以通过注入的方式相互调用;把两个模块拆成两个 war 包的时候,就使用 http 调用或者 dubbo 调用

    5 条回复    2024-10-12 14:21:54 +08:00
    bugmakerxs
        1
    bugmakerxs  
       66 天前
    我前公司有类似需求。当时想的一个方案是 interface 和 impl 不在同一个 module 里,比如有 user-api, user-dubbo-sdk, user-impl, user-http-sdk ,user-api 里放 interface ,各个 sdk 里配置不同的 impl 。maven 打包的时候引入 user-api 和其中某个 sdk 或者 impl 即可实现走本地调用还是远程调用。
    lambdaq
        2
    lambdaq  
       66 天前
    RPC 自动变 LPC ? 不错的想法。
    goinghugh
        3
    goinghugh  
       66 天前
    可以实现,我们就是这么做过。
    RPC 框架一般有本地调用以及远程调用,比如 dubbo 或者 sofa ,和 1 楼说的类似;但是要注意进程拆开时,远程调用根据业务可能要额外的处理,比如广播调用、负载均衡策略等。不过实现前最好想清楚你是否真的需要这种模式,因为两种支持分布式的部署,会带来额外的测试、运维、开发等成本,这些投入产出比你需要一下。
    wolfie
        4
    wolfie  
       66 天前 via Android
    feign client 和 controller 用相同抽象。

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

    其他 dubbo client 同理。
    ZZ74
        5
    ZZ74  
       66 天前
    同一楼的做法。主项目写接口,依赖注入+默认实现 。额外的 jar 实现接口,提供本地或者远程调用
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3388 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 11:51 · PVG 19:51 · LAX 03:51 · JFK 06:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.