V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
amrom
V2EX  ›  Java

关于微服务多模块问题

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

    最近发现一个问题,公司的项目做了服务拆分,但是每个服务的目录结构是多模块的,类似如下:

    server1:
      server1-api
        src
          main ...
        pom.xml
      server1-dao
        src
          main ...
        pom.xml
      server1-provider
      ...
      pom.xml
      ...
    
    server2:
     ...
    
    

    个人理解是,既然已经拆分了,多模块显然增加了复杂度,个人更偏向于一个 jar 包完成一个功能的思想。

    想看看大家怎么看这种项目结构

    22 条回复    2021-06-02 20:30:26 +08:00
    zoharSoul
        1
    zoharSoul   53 天前
    不赞同, 毫无意义
    除了如果有提供出去的 rpc interface 可以单独分个 module, 别的觉得没必要.
    guisheng
        2
    guisheng   53 天前
    对外的 api 如 fegin,rpc 等公共类需要建立一个单独的 module 其它的完全是自己坑自己。
    huifer
        3
    huifer   53 天前
    GM
        4
    GM   53 天前
    好熟悉的目录结构,请问是 JBoot 项目吗?
    zpfhbyx
        5
    zpfhbyx   53 天前
    😨 我让这玩意荼毒了一段时间了。。
    quiet1991
        6
    quiet1991   53 天前
    除了对外提供接口层需要独立的模块,其他的数据访问层基本到项目黄了估计也不会换,没必要
    aragakiyuii
        7
    aragakiyuii   53 天前
    这种除非一开始设计的非常好,否则就是给自己挖坑
    amrom
        8
    amrom   53 天前
    @GM 不是,就是一般的 Spring boot 项目,还是经过拆分的架构
    amrom
        9
    amrom   53 天前
    @huifer 看了你的文章,我感觉如果按照你的想法,会把简单的问题复杂化
    fiypig
        10
    fiypig   53 天前 via iPhone
    原公司的一个 java 大佬就要这么做,我直接逃了
    oneisall8955
        11
    oneisall8955   53 天前 via Android
    没必要,dao 也拆成模块,天才
    sunmoon1983
        12
    sunmoon1983   53 天前
    java 不懂,反正我在 golang 里面是把所有公用的模块都分到一个私有的仓库中,然后所有需要用到的地方直接依赖这个私有仓库就得了
    javacodecreeks
        13
    javacodecreeks   53 天前 via iPhone
    我们大佬出于中台设计理念和版本统一管理,几乎在后端每一个微服务里面都采用了模块化的管理方式,更要命的是 maven 的传递依赖链长达十几级以上的都有,遇到冲突时简直是生不如死
    wd
        14
    wd   52 天前 via iPhone
    这显然是过度设计。我猜这些代码虽然拆分了目录但是还是一个团队维护的,要不然两个团队在一个 repo 里面早打架拆开了。如果是一个团队维护,那么拆分 repo 必定会带来复杂度损耗,显然是继续这样最简单了。
    yetone
        15
    yetone   52 天前 via iPhone
    这就是 Facebook Google 和 Microsoft 这种顶级大厂喜欢搞的 monorepo 啊
    rapperx2
        16
    rapperx2   52 天前
    过度拆解了,dao 拆解了有什么用吗??
    lei2j
        17
    lei2j   52 天前
    我们公司拆分的比你这还狠,dao 、service-api 、service 、service-provider
    taowen
        18
    taowen   52 天前
    还有每个字段一个微服务,每个函数一个微服务呢
    xuanbg
        19
    xuanbg   52 天前
    楼主的想法没错,我就是这么干的。明明简单分几个包就可以了,要辣么多模块做咩???
    acmore
        20
    acmore   52 天前
    还不够细,不如一个 Class 一个模块(狗头
    没有明确目标的矫枉过正是大忌,跟过早优化是万恶之源一样
    caixiaomao
        21
    caixiaomao   52 天前
    dao 拆解感觉没必要 对外的 api 拆解还是有必要的
    ychost
        22
    ychost   52 天前
    设计过度了,仅需要 api 包和 service 尽可,如果没有 rpc 需求,api 都可以不要
    关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2023 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 13:31 · PVG 21:31 · LAX 06:31 · JFK 09:31
    ♥ Do have faith in what you're doing.