多租戶微服務腳手架 zuihou-admin-cloud,及1.2 版本正式發佈

前言

zuihou-admin-cloud是一個基於SpringCloud(Greenwich.RELEASE) + SpringBoot(2.1.2.RELEASE) 的SaaS微服務腳手架,具備用戶管理、資源權限管理、網關API、分佈式事務、Xss防跨站攻擊、自動代碼生成、大文件斷點分片續傳等多個模塊,支持多業務系統並行開發,可以作為後端服務的開發腳手架。代碼簡潔,架構清晰,適合學習和直接項目中使用。核心技術採用Eureka、Fegin、Ribbon、Zuul、Hystrix、JWT Token、Mybatis、SpringBoot、Redis、等主要框架和中間件。

架構圖


多租戶微服務腳手架 zuihou-admin-cloud,及1.2 版本正式發佈

功能亮點

服務註冊與調用:

基於Eureka來實現的服務註冊與調用,在Spring Cloud中使用Feign, 我們可以做到使用HTTP請求遠程服務時能與調用本地方法一樣的編碼體驗,開發者完全感知不到這是遠程方法,更感知不到這是個HTTP請求。

服務鑑權:

通過JWT的方式來加強服務之間調度的權限驗證,保證內部服務的安全性。

負載均衡:

將服務保留的rest進行代理和網關控制,除了平常經常使用的node.js、nginx外,Spring Cloud系列的zuul和rebbion,可以幫我們進行正常的網關管控和負載均衡。其中擴展和借鑑國外項目的擴展基於JWT的Zuul限流插件,方面進行限流。

熔斷機制:

因為採取了服務的分佈,為了避免服務之間的調用“雪崩”,採用了Hystrix的作為熔斷器,避免了服務之間的“雪崩”。

監控:

利用Spring Boot Admin 來監控各個獨立Service的運行狀態;利用turbine來實時查看接口的運行狀態和調用頻率;通過Zipkin來查看各個服務之間的調用鏈等。

數據權限:

利用基於Mybatis的DataScopeInterceptor攔截器實現了簡單的數據權限

SaaS的無感解決方案:

使用Mybatis攔截器實現對所有SQL的攔截,修改默認的Schema,從而實現多租戶數據隔離的目的。

二級緩存:

採用J2Cache操作緩存,第一級緩存使用內存(Caffeine),第二級緩存使用 Redis。 由於大量的緩存讀取會導致 L2 的網絡成為整個系統的瓶頸,因此 L1 的目標是降低對 L2 的讀取次數。 該緩存框架主要用於集群環境中。單機也可使用,用於避免應用重啟導致的緩存冷啟動後對後端業務的衝擊。

優雅的Bean轉換:

採用Dozer組件來對 DTO、DO、PO等對象的優化轉換

前後端統一表單驗證:

嚴謹的表單驗證通常需要 前端+後端同時驗證, 但傳統的項目,均只能前後端各做一次檢驗, 後期規則變更,又得前後端同時修改。 故在hibernate-validator的基礎上封裝了zuihou-validator-starter起步依賴,提供一個通用接口,可以獲取需要校驗表單的規則,然後前端使用後端返回的規則, 以後若規則改變,只需要後端修改即可。

防跨站腳本攻擊(XSS):

當前用戶信息注入器:

在線API:

由於原生swagger-ui某些功能支持不夠友好,故採用了國內開源的 knife4j ,並製作了stater,方便springboot用戶使用。

代碼生成器:

基於Mybatis-plus-generator自定義了一套代碼生成器, 通過配置數據庫字段的註釋,自動生成枚舉類、數據字典註解、SaveDTO、UpdateDTO、表單驗證規則註解、Swagger註解等。

定時任務調度器:

基於xxl-jobs進行了功能增強。(如:指定時間發送任務、執行器和調度器合併項目、多數據源)

漢化 Eureka 註冊中心頁面:

請切換分支進行查看

大文件/斷點/分片續傳:

前端採用webupload.js、後端採用NIO實現了大文件斷點分片續傳,啟動Eureka、Zuul、File服務後,直接打開docs/chunkUploadDemo/demo.html即可進行測試。 經測試,本地限制堆棧最大內存128M啟動File服務,5分鐘內能成功上傳4.6G+的大文件,正式服耗時則會受到用戶帶寬和服務器帶寬的影響,時間比較長。

分佈式事務:

集成了阿里的分佈式事務中間件:seata,以 高效 並且對業務 0侵入 的方式,解決 微服務 場景下面臨的分佈式事務問題。

1.2 版本更新內容

1,完善系統API&應用模塊表結構、前後端對接等

2,操作日誌中模塊描述記錄得更加人性化

3,優化&修復 前後端項目bug、代碼功能不健全、命名不規範等若干

4,消息中心接口完善&前後端對接

5,刪除附件統計相關無用接口

6,seata-all 相關版本升級到 1.0.0,完善demo&test服務對seata-server的支持 (對本項目中採用的SaaS方案,還存在一些問題)

7,升級 SpringCloud 版本為 Hoxton.SR1

8,升級 SpringBoot 版本為 2.2.2.RELEASE

9,升級 mybatis-plus 版本為 3.3.0 (升級後發現官方分頁查詢的bug,又回滾到3.2.0)

10,升級 Alibaba Cloud 版本為 2.1.1.RELEASE

11,升級Alibaba Cloud 版本為 2.1.1.RELEASE後, zuihou-j2cache-starter 存在無法讀取nacos中配置的bug,已修復

12,升級 knife4j 版本為 2.0.1

13, 升級 hutool 版本為 5.1.0

14, 升級大部分依賴jar的版本為最新穩定版


更多預覽


多租戶微服務腳手架 zuihou-admin-cloud,及1.2 版本正式發佈


多租戶微服務腳手架 zuihou-admin-cloud,及1.2 版本正式發佈


多租戶微服務腳手架 zuihou-admin-cloud,及1.2 版本正式發佈

項目代碼地址

微服務後端 代碼:

[gitee] https://gitee.com/zuihou111/zuihou-admin-cloud /[github] https://github.com/zuihou/zuihou-admin-cloud

租戶系統 代碼:

[gitee] https://gitee.com/zuihou111/zuihou-ui / [github] https://github.com/zuihou/zuihou-ui

開發&運營管理系統 代碼:

[gitee] https://gitee.com/zuihou111/zuihou-admin-ui / [github] https://github.com/zuihou/zuihou-admin-ui

[代碼生成器] https://github.com/zuihou/zuihou-generator

演示地址 (演示賬號沒有寫權限,只能查詢)

[租戶系統演示環境] http://tangyh.top:10000/zuihou-ui/

平臺管理員賬號/密碼: zuihou/zuihou

普通用戶賬號/密碼: test/zuiou

[開發&運營平臺演示環境] http://tangyh.top:180/zuihou-admin-ui/

賬號/密碼: demoAdmin/zuihou

點評

小編非常認真的看了一下,也總結了粉絲的留言,zuihou-admin-cloud多租戶微服務腳手架 功能非常的豐富。可能很多同學感覺一大堆配置比較麻煩,學習門檻比較高,因為許多開發者從事的工作可能侷限於某一模塊,只需要其中的某一個/一些功能即可滿足工作需求。但是該項目非常有學習價值,能瞭解到比較全面的技術整合和架構設計能力。

最後非常感謝作者的開源!


分享到:


相關文章: