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