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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM