1. 依賴升級
spring-boot.version -> 2.2.9
spring-boot-admin.version -> 2.2.4
mysql.version -> 8.0.21
easypoi.version -> 4.2.0
hutool.version -> 5.3.10
caffeine.version -> 2.8.5
2. 最佳化 zuihou-admin-ui 和 zuihou-ui 管理員給使用者重置密碼的功能
3. 新增限流功能
4. 新增IP block List 功能
5. 修復zuihou-jobs-server無法顯示圖示的bug
6. 最佳化程式碼若干&修復bug若干
影片清單: www.kancloud.cn/zuihou/zuihou-admin-cloud/1411215
租戶模式 | 描述 | 優點 | 缺點 | 分散式事務 |
NONE(非租戶模式) | 沒有租戶 | 簡單、適合獨立系統 | 缺少租戶系統的便利性 | 支援 |
COLUMN(欄位模式) | 租戶共用一個資料庫,在業務表中增加欄位來區分 | 簡單、不復雜、開發無感知 | 資料隔離性差、安全性差、資料備份和恢復困難 | 支援 |
SCHEMA(獨立schema) | 每個租戶獨立一個 資料庫(schema),執行sql時,動態在表名前增加schema | 簡單、開發無感知、資料隔離性好 | 配置檔案中必須配置資料庫的root賬號、不支援複雜sql和 sql巢狀自定義函式 | 支援 |
DATASOURCE(獨立資料來源) | 每個租戶獨立一個 資料庫(資料來源),執行程式碼時,動態切換資料來源 | 可獨立部署資料庫,資料隔離性好、擴充套件性高、故障影響小 | 相對複雜、開發需要注意切換資料來源時的事務問題、需要較多的資料庫 | 支援 |
基於SpringBoot(2.2.9.RELEASE) 的 SaaS型微服務腳手架,具備使用者管理、資源許可權管理、閘道器統一鑑權、Xss防跨站攻擊、自動程式碼生成、多儲存系統、分散式事務、分散式定時任務等多個模組,支援多業務系統並行開發,支援多服務並行開發,可以作為後端服務的開發腳手架。程式碼簡潔,架構清晰,非常適合學習使用。核心技術採用Mybatis、SpringBoot、JWT Token、RabbitMQ、FastDFS等主要框架和中介軟體。
希望能努力打造一套從 SaaS基礎框架 - 分散式微服務架構 - 自動化部署 - 系統監測 的解決方案。本專案旨在實現基礎能力,不涉及具體業務。
介面鑑權:
透過JWT的方式來加強服務之間排程的許可權驗證,保證內部服務的安全性。
監控:
利用Spring Boot Admin 來監控各個獨立Service的執行狀態;利用turbine來實時檢視介面的執行狀態和呼叫頻率
資料許可權:
利用基於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進行了功能增強。(如:指定時間傳送任務、執行器和排程器合併專案、多資料來源)
大檔案/斷點/分片續傳:
前端採用webupload.js、後端採用NIO實現了大檔案斷點分片續傳,啟動Eureka、Zuul、File服務後,直接開啟docs/chunkUploadDemo/demo.html即可進行測試。 經測試,本地限制堆疊最大記憶體128M啟動File服務,5分鐘內能成功上傳4.6G+的大檔案,正式服耗時則會受到使用者頻寬和伺服器頻寬的影響,時間比較長。
分散式事務:
集成了阿里的分散式事務中介軟體:seata,以 高效 並且對業務 0侵入 的方式,解決 微服務 場景下面臨的分散式事務問題。
關聯資料自動注入:
用於解決跨表、跨庫、跨服務分頁資料的屬性或單個物件的屬性 回顯關聯資料之痛, 支援對靜態資料屬性(資料字典)、動態主鍵資料進行自動注入。
專案 | gitee | github | 備註 |
微服務專案 | https://gitee.com/zuihou111/zuihou-admin-cloud | https://github.com/zuihou/zuihou-admin-cloud | SpringCloud 版本後端程式碼 |
單體專案 | https://gitee.com/zuihou111/zuihou-admin-boot | https://github.com/zuihou/zuihou-admin-boot | SpringBoot 版本後端程式碼 |
租戶後臺 | https://gitee.com/zuihou111/zuihou-ui | https://github.com/zuihou/zuihou-ui | | 給客戶使用的前端 |
開發&運營後臺 | https://gitee.com/zuihou111/zuihou-admin-ui | https://github.com/zuihou/zuihou-admin-ui | 給公司內部開發&運營&運維等人員使用 |
程式碼生成器 | https://gitee.com/zuihou111/zuihou-generator | https://github.com/zuihou/zuihou-generator | 開發人員使用 |
核心工具包 | https://gitee.com/zuihou111/zuihou-commons | https://github.com/zuihou/zuihou-commons | 核心工具包 |
專案 | 演示地址 | 管理員賬號 | 普通賬號 |
租戶後臺 | http://tangyh.top:10000/zuihou-ui | zuihou/zuihou | test/zuiou |
開發&運營後臺 | http://tangyh.top:180/zuihou-admin-ui | demoAdmin/zuihou | 無 |
[admin
]