为何要模块化
我(皱眉):这么多需求不得做一年,客户等的了么
领导(微笑):我们现在还没有客户
我(黑人问号):???没客户哪儿来的需求
领导(微笑):产品自己想的
我(沉默):。。。
领导(微笑):我们先搞个平台出来,这样比较好拉客户,balabala
痛,太痛了,搁这自娱自乐呢,这种情况要怎么设计啊
-
如果一开始设计的太完善太庞大,结果却体量不大并且只需要其中的一小部分功能,不但花费了大量的时间开发,同时可能由于需要部署大量无用但高耦合的服务而浪费服务器资源
-
如果一开始设计的比较小巧精简,结果需要支持非常庞大的体量和非常多的功能,那就需要额外的开发工作甚至重构需求和逻辑,说不定还要推到重来
于是我就在想有没有一种方式能够做到 模块化:可以根据项目的功能需求和体量进行任意模块的组合或扩展
通过以下几块内容来搭建一个模块化高扩展的后端服务
那就设计一个服务端吧
为了让大家理解起来更方便,我就用几个功能模块(用户,沸点,消息)来作为示例
PS:示例基于IDEA + Spring Cloud
构建工具
首先是构建工具的选择
现在主流的构建工具基本上就是Gradle
和Maven
了
一般最早开始学后端的同学都是习惯用Maven
而像我这种从Android
转后端的还是Gradle
比较好上手
构建工具的话其实两者都可以,大家可以根据自己的习惯来选择
不过我还是建议大家可以尝试一下Gradle
我后面的示例也是基于Gradle
来构建
项目结构
那我们现在就开始创建项目吧
我们要创建的项目叫juejin
,包含三个模块:juejin-user(用户)
,juejin-pin(沸点)
,juejin-message(消息)
结构1(不推荐)
Long long ago,这个世界上存在这样一种项目结构
每个模块是一个单独的项目,然后当时有10多个模块,而且还是我负责搭建的
现在想想,我真的是。。。想立马穿越回去,给自己来一个大嘴巴子
我给大家说说这种方式的优劣
缺点:
-
多模块同时打开很卡
-
每一个模块都是一个项目,模块多的情况下没办法同时打开,以一般公司的电脑配置,会很卡
-
只能要改哪个模块开哪个模块项目,有新的要开就把已经打开的关掉一个
-
有的时候刚关掉一个模块,突然想到有个地方漏改了,又把之前关掉的再打开,效率直接-50%
-
-
版本管理麻烦
-
git
管理也是多个项目,拉分支切分支也很麻烦 -
有的时候一个模块需要修改就单独拉了一个分支,最后有部分模块有某个分支,有部分模块没有
-
如果没有人专门做整理记录,这些分支大概率最后直接乱成好几副耳机线,就算有记录管理起来也是极其麻烦
-
优点:
- 无!