
最近发现一个问题,公司的项目做了服务拆分,但是每个服务的目录结构是多模块的,类似如下:
server1: server1-api src main ... pom.xml server1-dao src main ... pom.xml server1-provider ... pom.xml ... server2: ... 个人理解是,既然已经拆分了,多模块显然增加了复杂度,个人更偏向于一个 jar 包完成一个功能的思想。
想看看大家怎么看这种项目结构
1 zoharSoul Jun 1, 2021 不赞同, 毫无意义 除了如果有提供出去的 rpc interface 可以单独分个 module, 别的觉得没必要. |
2 guisheng Jun 1, 2021 对外的 api 如 fegin,rpc 等公共类需要建立一个单独的 module 其它的完全是自己坑自己。 |
3 huifer Jun 1, 2021 |
4 GM Jun 1, 2021 好熟悉的目录结构,请问是 JBoot 项目吗? |
5 justseemore Jun 1, 2021 我让这玩意荼毒了一段时间了。。 |
6 quiet1991 Jun 1, 2021 除了对外提供接口层需要独立的模块,其他的数据访问层基本到项目黄了估计也不会换,没必要 |
7 aragakiyuii Jun 1, 2021 这种除非一开始设计的非常好,否则就是给自己挖坑 |
10 fiypig Jun 1, 2021 via iPhone 原公司的一个 java 大佬就要这么做,我直接逃了 |
11 itechify PRO 没必要,dao 也拆成模块,天才 |
12 sunmoon1983 Jun 1, 2021 java 不懂,反正我在 golang 里面是把所有公用的模块都分到一个私有的仓库中,然后所有需要用到的地方直接依赖这个私有仓库就得了 |
13 javacodecreeks Jun 1, 2021 via iPhone 我们大佬出于中台设计理念和版本统一管理,几乎在后端每一个微服务里面都采用了模块化的管理方式,更要命的是 maven 的传递依赖链长达十几级以上的都有,遇到冲突时简直是生不如死 |
14 wd Jun 1, 2021 via iPhone 这显然是过度设计。我猜这些代码虽然拆分了目录但是还是一个团队维护的,要不然两个团队在一个 repo 里面早打架拆开了。如果是一个团队维护,那么拆分 repo 必定会带来复杂度损耗,显然是继续这样最简单了。 |
15 yetone Jun 2, 2021 via iPhone 这就是 Facebook Google 和 Microsoft 这种顶级大厂喜欢搞的 monorepo 啊 |
16 rapperx2 Jun 2, 2021 过度拆解了,dao 拆解了有什么用吗?? |
17 JLX Jun 2, 2021 我们公司拆分的比你这还狠,dao 、service-api 、service 、service-provider |
18 taowen Jun 2, 2021 还有每个字段一个微服务,每个函数一个微服务呢 |
19 xuanbg Jun 2, 2021 楼主的想法没错,我就是这么干的。明明简单分几个包就可以了,要辣么多模块做咩??? |
20 acmore Jun 2, 2021 还不够细,不如一个 Class 一个模块(狗头 没有明确目标的矫枉过正是大忌,跟过早优化是万恶之源一样 |
21 caixiaomao Jun 2, 2021 dao 拆解感觉没必要 对外的 api 拆解还是有必要的 |
22 ychost Jun 2, 2021 设计过度了,仅需要 api 包和 service 尽可,如果没有 rpc 需求,api 都可以不要 |