springboot-plus是一個基於SpringBoot 2 的管理後台系統,包含了用戶管理,組織機構管理,角色管理,功能點管理,菜單管理,權限分配,數據權限分配,代碼生成等功能。
系統基於Spring Boot2技術,前端採用了Layui2。資料庫以MySQL為實例,理論上是跨資料庫平台。
plus是適合單體系統,系統分割的java快速開發平台,也可以經過改造成微服務平台(以前做一個,但覺得plus應該聚焦系統核心,而不是簡單堆砌功能,所以放棄了)
以下是單體系統,小系統,和微服務的區別
單體系統是一種常見系統設計方式,也是這十多年來最主要的設計方式。單體系統的所有功能都在一個工程裡,打成一個war包,部署。這樣有以下明顯好處
1.單體系統開發方式簡單,我們從剛開始學習編程,就是完成的單體系統,開發人員只要專注於開發目前工程
2.容易修改,如果需要修改任何功能,都非常方便,只需要修改一個工程範圍的程式碼
3.測試簡單,單體系統測試不需要考慮別的系統,避免本書下冊要提到的各種REST,MQ調用
4.部署也很容易:不需要考慮跟別的系統關係,直接打war套件部署到Web伺服器即可
5.效能容易擴展,可以透過Nginx,把一個應用程式部署到多個伺服器上。
隨著業務發展,重構,單體系統越來越多,在開發龐大的單體系統的時候,就會有以下弊病
1.單體系統龐大,越來越難理解單體系統,微小的改動牽涉面廣泛導致開發小組小心謹慎,開發速度會越來越慢。另外,啟動龐大的單體系統,可能需要3分鐘,或更多時間
2、多個功能在同一個單體系統上開發,導致測試越來越慢,例如,測試必須排期,串列測試
3.單體系統如果想對技術進行更新換代,那代價非常大,如果是個小系統構成,則可以選取一個小系統先做嘗試。單體大系統是幾乎不可能做技術升級的
4.單體系統的所有功能運行在同一個JVM裡,功能會互相影響,例如一個統計上傳word文檔的頁碼的功能由於非常消耗CPU,因此,會因為調用統計功能,導致整個系統短暫都不可用,出現假死的現象
因此,越來越多的架構師在設計系統的時候,會考慮系統拆分成多個單體小系統甚至是微服務。對於傳統企業應用,拆成小系統較為合適,對網路系統,使用微服務個較為合適,這是因為
1.傳統IT系統本質上還是會用一個資料庫,而微服務提倡的是一個服務一個資料庫
2.傳統IT系統很少需要呼叫其他模組服務。傳統IT系統透過工作流程來串聯其他子系統。而電商類的微服務則是透過RPC等方式進行交互,是一個輕量級協定。傳統IT系統也可以透過SOA,JMS跟其他系統(非子系統)交互,採用重量級協議
3.微服務對系統的基礎設施要求很高,例如微服務治理,彈性庫等等,只要電商系統才有人力物力去做這種事情,而傳統IT系統,及時財大氣粗,也暫時不具備微服務那樣的IT基礎設置
因此,對於大多數傳統IT應用來說,單體拆分小系統在技術上沒有風險,是一個可以立即實施的架構。如下是一個單體系統拆分後的物理架構
對使用者來說,存取不同的選單功能,講定位到不同得子系統,提供服務。