传统架构采用单机单应用集成,商品、订单等所有业务放在一起,模块耦合度很高,所有系统要柔和在一起,开发和维护难度都很大,最主要的是系统扩展性差。因此我们将不同的功能模块拆分成多个独立的工程,如果某个点压力过大,就可以单独为其增加配置。
但是有一点需要注意:业务分开了,表示系统之间需要多余的工作量要完成,因此模块之间的规范就显得尤为重要。
这样做的优点:
①把模块分开,使用接口通信,降低模块间的耦合度;
②把项目拆分成多个子项目,不同的团队负责不同的项目;
③增加功能模块时,只需要增加对应的子项目,调用其他的系统接口,系统扩展性好;
④可以灵活的进行分布式部署。
后台管理系统搭建
采用maven技术,做jar包和工程间依赖管理。另外工程聚合、继承容易。maven的工程类型有三种jar,war,pom。
父工程为一个pom工程,在父工程中可以定义各个子工程使用的jar包版本信息。—goods-parent
另外,在单个系统中,我们一般会存在一个utils包来作为系统的工具包,但是在分布式系统中,使用一个maven工程在做此任务,同时也可作为其他系统的工具包。—goods-common
主要的业务我们也将其拆分,按照架构的层次,将其拆分为pojo、mapper、server、controller,其对应关系如下所示:
后台管理工程结构:
goods-parent -- 管理依赖jar包的版本,全局,公司级别
|--goods-common --- 通用组件、工具类
|--goods-manage -- 后台系统
|--com.goods.manage.web
|--com.goods.manage.service
|--com.goods.manage.mapper
|--com.goods.manage.pojo
其中,需要注意的是,在manager中的各个子工程相互依赖时,需要在pom.xml文件定义依赖关系,因为我们最终要启动整个manager工程,所以需要将配置tomcat插件启动的配置放在manager对应的pom文件中,而Spring和MyBatis的配置文件都是在web工程中使用的,所有需要要所需要得配置文件放在web对应的resource下面,同时配置web.xml读取,以及加载Spring。