浅谈项目结构spring cloud项目架构,各种项目项目架构分类方法,项目目录结构,项目模块分类方法,微服务项目架构方法

微服务项目分类方法,项目架构分类方法,项目目录结构,项目模块分类方法

当然如果不是微服务或不是java项目一样可以这样分,只是不需要用springCloud的这几个模块

1.所有模块只有一个,如果小型项目功能模块不多的情况,想用微服务可以用这种方式

myProject.parent       父项目
    springCloud.eureka      注册中心
    springCloud.config      配置中心
    springCloud.zuul        路由网关
    myProject.common        公共类库包
myProject.model         Model层 myProject.dao DAO层 myProject.service Service层
myProject.webUI 系统webUI(系统所有web界面都放在一起,这个模块可以用vue/npm也可以用thymeleaf) myProject.webAPI 系统WebAPI(所有API也都在一起) myProject.appAPI 系统给APP访问的API

 

2.适合中型项目,所有webUI模块只有一个,但各功能模块的API用不同的微服务模块,因为UI界面出问题几率很小,所以只在API放面进行微服务隔离,就算一个API有问题也不会影响其他API

myProject.parent
    springCloud.eureka           注册中心
    springCloud.config           配置中心
    springCloud.zuul             路由网关
    myProject.common             公共类库包
myProject.model          Model层 myProject.dao DAO层 myProject.service Service层
myProject.webUI 微服务总系统UI (同上) myProject.systemWebApi 系统管理微服务1.WebAPI.(如用户/角色/权限/菜单等)(不同的功能模块的API用不同的微服务) myProject.orderWebApi 订单管理微服务2.WebAPI. myProject.wmsWebApi 仓库管理微服务3.WebAPI. myProject.appApi APP访问的API微服务

 

 

3.适合中型项目,各微服务里自带WebUI和webAPI,甚至各微服务可以自带dao/service,这种适合各微服务功能比较独立的方式,就算某一个服务有问题不影响其他微服务

myProject.parent
    springCloud.eureka      注册中心
    springCloud.config      配置中心
    springCloud.zuul        路由网关
    myProject.common        公共类库包
myProject.model         Model层 myProject.dao DAO层 myProject.service Service层
myProject.system 系统管理微服务1.(webUI和webAPI在一个微服务里) myProject.order 订单管理微服务2.(webUI和webAPI在一个微服务里) myProject.wms 仓库管理微服务3.(webUI和webAPI在一个微服务里) myProject.appApi APP访问的API微服务

 

4.适合大型项目,这个和第3种差不多,只是把webUI和webAPI再进行分离开来,但发布部署成本维护成本上去了,如果一个系统10个模块,就要发布20个微服务站点,开销比较大,

myProject.parent
    springCloud.eureka           注册中心
    springCloud.config           配置中心
    springCloud.zuul             路由网关
    myProject.common             公共类库包
myProject.model          Model层 myProject.dao DAO层 myProject.service Service层
myProject.systemWebUI 系统管理微服务1.webUI界面 myProject.systemWebApi 系统管理微服务1.webAPI myProject.orderWebUI 订单管理微服务2.webUI界面 myProject.orderWebApi 订单管理微服务2.webAPI myProject.wmsWebUI 仓库管理微服务3.webUI界面 myProject.wmsWebApi 仓库管理微服务3.webAPI myProject.appApi APP访问的API微服务(如果可以的话各系统的appAPI也可以再分成微服务)

 

5.适合大型项目,这个和第4种差不多,webUI只有界面可以用独立的nodejs开发,每一个webApi有独立的数据库访问模块(Model,Dao,Service),如果两个Api相互访问数据全用Feign或者其他RPC框架,但开发成本上去了,每层都要搞一套数据访问了,如果一个系统10个模块,就有10套数据访问,要是各模块有数据访问要用api或者Feign之类的,开发成本就上去了,复杂度也上去了,当于每个模块完全独立。

myProject.parent
    springCloud.eureka           注册中心
    springCloud.config           配置中心
    springCloud.zuul             路由网关
    myProject.common             公共类库包
(没有公共的Model,Dao,Service每一个服务自己独立数据访问,如当一个服务访问另一个去访问另一个服务数据时,使用FeignClient方式)
myProject.systemWebUI 系统管理微服务1.webUI界面 myProject.systemWebApi 系统管理微服务1.webAPI (有system自己的Model,Dao,Service) myProject.orderWebUI 订单管理微服务2.webUI界面 myProject.orderWebApi 订单管理微服务2.webAPI(有order自己的Model,Dao,Service) myProject.wmsWebUI 仓库管理微服务3.webUI界面 myProject.wmsWebApi 仓库管理微服务3.webAPI(有wms自己的Model,Dao,Service) myProject.appApi APP访问的API微服务(因为这一层没有Model,Dao,Service所以全用FeignClient方式访问其他所有微服务的数据)

 

posted @ 2020-12-01 16:23  为乐而来  阅读(5203)  评论(0编辑  收藏  举报