项目骨架,开整!

爱笑的架构师

共 2746字,需浏览 6分钟

 · 2022-05-30

上一篇环境搭建好之后,我们的项目终于要开工了。开工前需要给项目取个高大上的名字,经过我反复思考(这也许是拖更的重要原因)最终确定为:easy-rpc

看起来很随意,其实蕴含了丰富的含义:easy 代表这个项目上手很容易,大家很容易学会;easy 也代表这个项目就是简单造轮子用的,不可用于生产环境,出问题别找我,hhhhhhhhh

设计项目结构

在实际工作中很少会采用单一的 Maven 工程结构,尤其是遇到业务复杂的项目几乎都是采用多 module 结构,这样不光层次清晰,单个 module还可以发布为三方件供其他项目依赖复用。

如果你对设计项目结构还是没有很好的思路,有一个很简单的办法,去 Github 下载开源的框架源码,学习借鉴一下。

我们这次的项目是动手撸一个 RPC 框架,而国内比较流行的框架有阿里的 Dubbo,自然而然想到参考一下它的结构,下面的截图是 Dubbo 框架的源码结构:

Dubbo 框架源码结构

可以看出,一个父模块下面有个多个子模块,通过命名也非常容易看出每个模块的功能。

我们的 RPC 项目只需要实现最基础的功能,肯定不能跟成熟的 Dubbo 框架比,所以结构上也必要那么复杂。下面设计一下 easy-rpc 项目结构:

easy-rpc
├── easy-rpc-spring-boot-starter
├── easy-rpc-example
│   ├── easy-rpc-example-consumer
│   ├── easy-rpc-example-provider

父模块下面有两个子模块:

easy-rpc-spring-boot-starter 是核心框架代码,easy-rpc 所有的功能代码都会放在这里面。为了便于后续集成到项目中,我特地将 easy-rpc 框架包装成了 spring-boot-starter,用过 spring-boot 的同学应该都知道,spring 官方提供了众多 spring-boot-starter-xxx,starter 就是将相关的依赖和配置放在一块,便于开发者引用。spring 允许开发者自定义各种 starter,但是在命名上有一些建议:xxx-spring-boot-starter。

另外一个模块 easy-rpc-example是用来测试框架用的,这里面会写一些样例代码,便于大家更快上手使用easy-rpc框架。

接下来就带领大家一步步创建项目骨架结构。

搭建项目骨架

创建父模块 Maven 工程

使用 IDEA 新建一个空的 Maven 工程,后面会创建几个子Module。

操作路径:「New Project」-> 「Maven」

新建 Maven 工程

注意不需要选择任何 Maven 模板,点击「Next」后填写工程名称和 Maven 坐标(GAV)。

点击「Finish」后会生成一个src目录,直接删除掉这个目录。

创建子模块 easy-rpc-spring-boot-starter

在项目根目录上右键新建子模块。

操作路径:「new」-> 「Module」-> 「Maven」

同样与父模块一样,填写子模块的工程名和 Maven 坐标(GAV)。

这里需要注意的一点是:Parent 要选择上父模块。

创建子模块 easy-rpc-example

与上面的步骤类似,继续创建子模块。


easy-rpc-example创建完之后会生成src目录,这里同样把目录删除。接下来会创建两个子模块。


创建子模块 easy-rpc-example-provider

easy-rpc-example-provider 是模拟服务提供者,对外提供接口服务。后续会集成 easy-rpc 框架写一个样例。

这里注意一下,Parent 选择 easy-rpc-example。


创建子模块 easy-rpc-example-consumer

easy-rpc-example-consumer 是模拟服务消费者,用于消费接口。

这里注意一下,这里 Parent 同样是选择 easy-rpc-example。


项目骨架结构展示

至此 easy-rpc项目基本骨架搭建完毕,我们在 IDEA 中看下效果:

以树形展示如下:

└── easy-rpc
    ├── easy-rpc-example  // 集成 rpc 框架的样例
    │   ├── easy-rpc-example-consumer // 模拟消费者
    │   │   ├── pom.xml
    │   │   └── src
    │   │       ├── main
    │   │       │   ├── java
    │   │       │   └── resources
    │   │       └── test
    │   │           └── java
    │   ├── easy-rpc-example-provider // 模拟提供者
    │   │   ├── pom.xml
    │   │   └── src
    │   │       ├── main
    │   │       │   ├── java
    │   │       │   └── resources
    │   │       └── test
    │   │           └── java
    │   └── pom.xml
    ├── easy-rpc-spring-boot-starter // easy-rpc 框架核心代码,也是本项目的重点
    │   ├── pom.xml
    │   └── src
    │       ├── main
    │       │   ├── java
    │       │   └── resources
    │       └── test
    │           └── java
    └── pom.xml

小结

采用多模块方式搭建项目其实是为了带领大家了解代码分层架构设计的思想,代码分层架构设计主要是为了实现责任分离、解耦、组件复用和标准制定。现在你可能有点感觉了吧。

-- END --

项目全部搭建好了,下期开始撸代码了。如果你对这个项目还不是很熟悉,推荐你把前面的内容补一下《《从零开始造一个 RPC 轮子》

还可以学习:

好了,今天的技术文就到这里了。我是雷小帅,一个死磕技术的理工男,如果本文对你有帮助,麻烦点赞、分享、在看支持一下,非常感谢~ 下期见

浏览 43
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报