微服務項目分類方法,項目架構分類方法,項目目錄結構,項目模塊分類方法
當然如果不是微服務或不是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有獨立的數據庫訪問模塊,但開發成本上去了,每層都要搞一套數據訪問了,如果一個系統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方式訪問其他所有微服務的數據)
