V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
jwh199588
V2EX  ›  程序员

Java 模块化通信

  •  1
     
  •   jwh199588 · Oct 11, 2024 · 2179 views
    This topic created in 576 days ago, the information mentioned may be changed or developed.

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

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

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

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

    其他 dubbo client 同理。
    ZZ74
        5
    ZZ74  
       Oct 12, 2024
    同一楼的做法。主项目写接口,依赖注入+默认实现 。额外的 jar 实现接口,提供本地或者远程调用
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   6208 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 02:27 · PVG 10:27 · LAX 19:27 · JFK 22:27
    ♥ Do have faith in what you're doing.