前言
接上一篇《大型网站架构演变》,从本篇开始,将从0到1构建一个单体的电商项目,并以此为基础,从集群到分布式,再到微服务,进行逐步演变。我们先从用户注册入手,从头开始分析,并搭建项目。下面我们开始吧。
前后端分离开发模式
在早期传统的Java Web开发的时候,我们的前端代码(html/css/js)和后端代码(Java)是耦合到一起的,都在一个工程里面,这样导致前后端开发人员在协作时,并不太方便的。另外,这种模式下,web容器(如tomcat)还承担了页面的渲染工作,比如JSP就是由web容器渲染处理成html返回给客户端的,这样的话,实际上一旦网站用户、流量上去后,web容器在这方面压力会很大的。
我们采用前后端分离开发模式的话,那么,前端是一套工程代码,后端是一套工程代码,两者是没有耦合到一起的,是分开部署的。一般,我们会把前端部署到高性能反向代理服务器Nginx上(早期可能是Apache上,静态资源服务器),前端会通过restful api来和后端通信,以JSON这种格式来进行数据传输。这种模式,非常利于前后端开发人员的分工,提高了协作的效率,而且我们只需要维护一套后端代码,可以为多种client提供服务。
Maven构建聚合工程
我们将采用主流的方式,通过Maven来管理项目,并对项目进行分层设计,构建聚合工程。
在Idea中完成maven工程聚合(api->service->mapper->pojo->common):
(聚合之后,别忘记安装,建立依赖关系,也就是install喔~)
数据库建模
我们不用急于编写代码,应该分析清楚业务后,进行数据库设计。一般情况下,我们并不会直接在数据库中进行设计,而是利用一些数据库建模工具,如PowerDesigner、ERWin等,我这里会使用PDMan(开源、国产、漂亮、极简)来进行。
在设置好数据库连接后,我们可以设计这样一张users表。注意到,这里把主键id设置为字符串,而非自增的。是因为在前面一篇文章,我们提及过进行分库分表需要全局唯一id作为主键,因此我们在这里先这么处理,为以后打下伏笔。表设计好了后,我们利用建模工具,同步到mysql中。
这里我们可以发现PDMan有一个非常好用的功能,那就是可以记录每次数据库表结构的变更记录,类似于git的版本管理机制。
Mybatis 数据库逆向生成工具
为了进一步提高效率,当我们的数据库表设计好了之后,我们可以利用MyBatis数据库逆向生成工具来帮助我们自动生成一些文件,比如数据库对应的实体entity,与之对应的mapper.xml,和相应的接口映射类。
然后,我们把自动生成的这些文件copy至项目中即可(需要依赖及配置)。注意MyMapper文件,其实这是一个通用mapper。通俗点说,通用Mapper是对单表的CRUD操作进行了较为详细的实现,使得我们可以按照自己的需求选择通用的方法。
整合SpringBoot
依赖
启动类
配置
小结
到这里,咱们已经讲述了前后端开发模式、Maven构建聚合工程、数据库建模、MyBatis逆向生成工具以及SpringBoot整合等相关话题。朋友们,夜已深了,本文就先到这里吧(详情可以参见,我的公众号:丰哲同学)。