歡迎您光臨本站 註冊首頁

zuihou-admin-cloud 2.4 釋出,微服務 SaaS 腳手架

←手機掃碼閱讀     admin @ 2020-07-14 , reply:0

今日更新日誌:

整體更新:

0. 錄製了完整的專案講解影片教程
1. 新增批量替換專案名&包名&字首的Shells指令碼(支援Linux&Mac)
2. 完整的專案講解影片
3. 優化程式碼若干 & 刪除無用程式碼和註釋掉的程式碼若干 & 完善程式碼註釋若干
4. 調整了nacos中的所有配置檔案
5. 優化整個專案所有的列舉型別(刪除列舉型別上標記的@JsonFormat(shape = JsonFormat.Shape.OBJECT) )
6. 廢棄zuihou-sacn-stater模組
7. 修復通用簡訊驗證碼傳送的bug
8. 修復zuihou-admin-ui上傳租戶頭像報錯和無法修改頭像成功的bug
9. 修復zipkin + seata整合時衝突報錯
10.廢棄SystemApi模組
11.依賴升級
    spring.boot.version -> 2.2.7.RELEASE
    spring.cloud.version -> Hoxton.SR3
    dynamic.datasource.version -> 3.1.0
    mybatis.version -> 3.5.4
    mybatis-spring.version -> 2.0.4
    mybatisplus.version -> 3.3.2
    p6spy.version -> 3.9.0
    fastjson.version -> 1.2.72  (修復安全漏洞)
    druid.version -> 1.1.22   (修復編譯時,IDEA的警告)
    knife4j.version -> 2.0.4
    swagger.version -> 1.5.22
    hutool.version -> 5.3.9
    jjwt.version -> 0.11.1

 

zuihou-gateway-server更新:

1. 優化gateway閘道器的熔斷配置
2. AccessFilter為TokenContextFilter

zuihou-injection-starter更新:

1. 修改 InjectionFieldPo 和 InjectionField 類的 feign 欄位為 apiClass,使得欄位命名更加合理
2. InjectionField註解類新增dictType屬性,解決字典型別資料注入bug
3. 修復自動注入器注入字典型別的資料時,無法區分不同字典型別的值

zuihou-validator-starter更新:

1. 修復表單統一驗證模組不支援Restful風格 + BaseController介面的驗證規則獲取bug
2. com.github.zuihou.validator.config.EnableFormValidator 註解移動到 com.github.zuihou.validator.annotation.EnableFormValidator

zuihou-databases更新:

1. 優化SCHEMA模式全域性攔截器程式碼功能和可讀性
2. 優化非DATASOURCE模式資料來源配置
3. 優化分頁外掛每次查詢最大500條的限制
4. PageParams類的 getPage() 方法修改成 buildPage(),並支援多欄位排序
5. 刪除 MultiTenantInterceptor ,新增 ReplaceSql
6. 新增MasterDatabaseConfiguration, 優化NONE、SCHEMA、COLUMN模式的資料來源配置和事務配置
7. 修復NONE、SCHEMA、COLUMN模式事務失效的bug

zuihou-core更新:

1. 新增JsonUtil工具類(jackson)

zuihou-boot更新:

1. 優化列舉欄位反序列化全域性配置類:EnumDeserializer, 提高可讀性和效能
2. 新增列舉型別欄位的全域性序列化配置類:EnumSerializer, 實現了BaseEnum介面的列舉按照規範序列化
3. 優化 BaseConfig 類中全域性的 ObjectMapper 配置
3. 優化LocalDateTime型別引數的Jackson反序列化規則
4. 優化LocalDateTime、Date、LocalDate、LocalTime等日期型別表單引數傳遞時的轉換規則
5. 全域性統一異常的狀態碼修改為400
6. 優化PageController類handlerWrapper方法的邏輯
 

zuihou-cloud-starter更新:

1. 優化服務遠端呼叫時,請求頭和執行緒變數的傳遞
2. 新增全域性的支援負載均衡策略、請求頭和LocalThread引數傳遞的LbRestTemplate
3. 新增全域性的熔斷回撥, @FeignClient 註解無需單獨配置 fallback 和 fallbackFactory 即可實現回撥

zuihou-swagger2-starter更新:

1. 使得通過 zuihou.swaggger.enabled 可以全域性禁用swagger功能
2. 優化SwaggerProperties類的配置和預設值

zuihou-log-starter更新:

1. 為了減少zuihou-log-starter模組體積,將ip2region.db移動到oauth服務。
2. 修復操作日誌根據引數控制是否記錄請求引數的bug

定時任務更新:

1. 修復分散式定時執行器執行重置任務時,找不到sql指令碼的bug

程式碼生成器更新:

1. 優化程式碼生成器配置若干
2. 修復程式碼生成器生成的程式碼導包不正確和缺少配置的bug
3,修復程式碼生成器生成配置類和Controller類錯誤的bug
4,優化程式碼生成器使得生成程式碼時,可以使用模糊查詢同時生成多張表
5,完善程式碼生成後的提示資訊
6, 支援生成租戶資料來源動態新增訊息佇列監聽類

 

影片清單:

 

租戶模式:

租戶模式 描述 優點 缺點 分散式事務
NONE(非租戶模式)  沒有租戶 簡單、適合獨立系統 缺少租戶系統的便利性 支援
COLUMN(欄位模式) 租戶共用一個資料庫,在業務表中增加欄位來區分   簡單、不復雜、開發無感知  資料隔離性差、安全性差、資料備份和恢復困難 支援
SCHEMA(獨立schema)  每個租戶獨立一個 資料庫(schema),執行sql時,動態在表名前增加schema 簡單、開發無感知、資料隔離性好 配置檔案中必須配置資料庫的root賬號、不支援複雜sql和 sql巢狀自定義函式 存在bug
DATASOURCE(獨立資料來源)  每個租戶獨立一個 資料庫(資料來源),執行程式碼時,動態切換資料來源 可獨立部署資料庫,資料隔離性好、擴充套件性高、故障影響小 相對複雜、開發需要注意切換資料來源時的事務問題、需要較多的資料庫 支援

簡介:


基於`SpringCloud(Hoxton.SR1)`  + `SpringBoot(2.2.5.RELEASE)` 的 SaaS型微服務腳手架,具備使用者管理、資源許可權管理、閘道器統一鑑權、Xss防跨站攻擊、自動程式碼生成、多儲存系統、分散式事務、分散式定時任務等多個模組,支援多業務系統並行開發,支援多服務並行開發,可以作為後端服務的開發腳手架。程式碼簡潔,架構清晰,非常適合學習使用。核心技術採用Nacos、Fegin、Ribbon、Zuul、Hystrix、JWT Token、Mybatis、SpringBoot、Seata、Nacos、Sentinel、RabbitMQ、FastDFS等主要框架和中介軟體。

希望能努力打造一套從 SaaS基礎框架 - 分散式微服務架構 - 自動化部署 - 系統監測 的解決方案。本專案旨在實現基礎能力,不涉及具體業務。
 

功能點介紹:

服務註冊與呼叫:

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

 服務鑑權:

通過JWT的方式來加強服務之間排程的許可權驗證,保證內部服務的安全性。

負載均衡:

將服務保留的rest進行代理和閘道器控制,除了平常經常使用的node.js、nginx外,Spring Cloud系列的zuul和ribbon,可以幫我們進行正常的閘道器管控和負載均衡。其中擴充套件和借鑑國外專案的擴充套件基於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):

  •      通過過濾器對所有請求中的 表單引數 進行過濾
  •      通過Json反序列化器實現對所有 application/json 型別的引數 進行過濾

當前使用者資訊注入器:

 通過註解實現使用者身份注入

線上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侵入 的方式,解決 微服務 場景下面臨的分散式事務問題。

灰度釋出:
    
為瞭解決頻繁的服務更新上線,版本回退,快速迭代,公司內部協同開發,本專案採用修改ribbon的負載均衡策略來實現來灰度釋出。     

關聯資料自動注入:

用於解決跨表、跨庫、跨服務分頁資料的屬性或單個物件的屬性 回顯關聯資料之痛, 支援對靜態資料屬性(資料字典)、動態主鍵資料進行自動注入。

專案程式碼地址

專案 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 ]

來源:OsChina
連結:https://www.oschina.net/news/117175/zuihou-admin-cloud-2-4-released
zuihou-admin-cloud 2.4 釋出,微服務 SaaS 腳手架已經有117次圍觀

http://coctec.com/news/all/show-post-243016.html