...admin-cloud 2.3 發布,完美支持分布式事務 - OSCHINA - 中文...

2020-12-17 開源中國

今日更新日誌:

優化:

  1. spring.cloud.version -> Hoxton.SR3
  2. spring.boot.version -> 2.2.6.RELEASE
  3. spring-cloud-alibaba -> 2.2.1.RELEASE
  4. seata.version -> 1.2.0
  5. fastjson.version -> 1.2.68
  6. j2cache.version -> 2.8.2-release
  7. jjwt.version -> 0.9.1
  8. hutool.version -> 5.3.1
  9. 支持 nacos-server 1.2.1
  10. 支持 seata-server 1.2.0
  11. 優化數據權限邏輯
  12. 同步項目中 nacos 和 seata 的腳本
  13. 優化項目配置,使得任意租戶模式完美支持 seata
  14. 優化若干代碼
  15. 調整開發文檔兼容當前最新版本代碼   https://www.kancloud.cn/zuihou/zuihou-admin-cloud

修復:

  1. 復刪除資源時執行刪除SQL的bug
  2. 修複查詢緩存數據時,查詢到為null的數據的會報NPE的bug
  3. 修復RoleAuthorityServiceImpl類的方法 無事務註解

租戶模式:

租戶模式 描述 優點 缺點 分布式事務
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的負載均衡策略來實現來灰度發布。     

關聯數據自動注入:

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

項目代碼地址

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

項目 演示地址 管理員帳號 普通帳號
租戶後臺 http://tangyh.top:10000/zuihou-ui zuihou/zuihou test/zuiou
開發&運營後臺 http://tangyh.top:180/zuihou-admin-ui demoAdmin/zuihou

相關焦點

  • zuihou-admin-cloud 1.8 發布,支持 Cloud Alibaba 2.2.0
    升級 Alibaba Cloud 2.2.0.RELEASE2. 修復 數據自動注入器 注入遠程調用的數據類型擦除的bug3. 新增 ribbon自定義負載均衡規則 實現簡單的灰度發布4. 完善父類控制器:BaseController2,新增模板方法:CRUD、導入、導出、預覽、分頁(排序) 5.
  • ...Admin 2.2.0發布,支持最新Spring Boot/Cloud之外,新增中文展示!
    作者 | 冷冷gg來源 | oschina.net/news/111731/spring-boot-admin-2-2-0-released核心依賴升級Spring Cloud Hoxton.RELEASE
  • zuihou-admin-cloud 1.9.1 發布,代碼生成器支持前後端和建項目
    代碼生成器:支持導入、導出、導出預覽、分頁查詢、翻頁勾選、行級勾選等方法3. 代碼生成器: 支持欄位生成 枚舉、字典 類型的欄位, 4. SuperController 新增自定義查詢列表方法優化1. 優化代碼生成器匹配最新的後端代碼: 樹形、列表、編輯、導出預覽、導入頁面2.
  • zuihou-admin-cloud 1.6 發布,支持自動生成前端頁面
    唯一Id生成器換成 hutool 的 IdUtil2. 關聯欄位數據注入工具(zuihou-injection-starter) 增加guava本地緩存,加快注入速度, 完善注釋。3. 使用MP提供的自定義枚舉類型轉換器,修復 資料庫中枚舉欄位的值不存在時,報錯的bug4. 使用hutool工具類優化操作日誌記錄的異常消息5.
  • ...2.1 發布,租戶模式支持動態新增數據源 - OSCHINA - 中文開源...
    新增 租戶模式 支持多數據源模式:動態增減數據源,一個租戶一個庫一個數據源5. 多數據源模式相關代碼和配置,調整成一鍵切換模式6. 新增多數據源模式完美支持分布式事務(seata 1.0.0) 7. 新增刪除租戶時,刪除租戶數據和資料庫的接口,並刪除該租戶的數據源8.
  • zuihou-admin-cloud 1.5 發布,跨庫跨服務數據聚合組件
    修復 bug    <a href="https://github.com/zuihou/zuihou-ui/issues/3"># fix 3</a> 2. 升級SpringBoot 版本至 2.2.43. 升級MybatisPlus 版本至 3.3.14. 升級spring  版本至 5.2.35.
  • zuihou-admin-cloud 1.1 發布 , 獨立Schema的多租戶微服務腳手架
    2,新增 系統api接口表、應用-系統api 關聯表 以及相關接口, 用於外部應用的api授權3,修改 應用表相關欄位,並重新生成代碼4,新增 zuihou-scan-starter 起步依賴模塊,實現自動掃描服務的所有api接口, 並提供2種遠程調用權限服務持久化的方式(feign or rabbitmq)5,升級 swagger-bootstrap-ui 1.9.6
  • Spring Boot Admin 2.2.4 發布,兼容最新版本 Spring Boot
    spring boot admin 2.2.4 版本發布,本版本為 bug 修復版本 主要兼容 spring boot 2.3.x。
  • 微服務 SpringCloud Alibaba Seata處理分布式事務
    一、分布式事務問題什麼是分布式事務?二、Seata簡介1.是什麼Seata 是一款開源的分布式事務解決方案,致力於在微服務架構下提供高性能和簡單易用的分布式事務服務。官網地址:http://seata.io/zh-cn/2.主要功能一個典型的分布式事務過程分布式事務處理過程:一ID+三組件模型
  • J2Cache 2.6.0 發布,支持分布式 session 存儲管理
    J2Cache 2.6.0 版本發布啦,該版本最最值得關注的就是支持分布式的 session 存儲管理,支持不同的 Servlet 容器。
  • Spring Cloud Alibaba v2.2.3 發布 - OSCHINA - 中文開源技術交流...
    v2.2.3 又又又發布了,主要修復 v2.2.2 引入BUG.
  • 分布式事務,EventBus 解決方案:CAP【中文文檔】
    目前 CAP 使用的是 .NET Standard 1.6 的標準進行開發,目前最新預覽版本已經支持 .NET Standard 2.0.1.2 應用場景CAP 的應用場景主要有以下兩個:分布式事務中的最終一致性(異步確保)的方案。
  • zuihou-admin-cloud 升級 | 實現數據權限
    # 2019年11月26日00:11:56 升級日誌1,同步最新的sql腳本、nacos腳本到源碼相應文件中2,租戶運營後臺升級
  • 美團T9都說太「強」了,以微服務分布式的實戰詳解SpringCloud
    Zuul入r ]實例8.3 Zuul原理一過濾器8.4限流8.5動態路由8.6灰度發布(金絲雀發布)8.7使用Hystrix熔斷>14.3分片算法144分片中間件ShardingSphere第15章分布式資料庫事務15.1強一致性事務
  • Spring Cloud Alibaba 發布 GA 版本,新增 4 個模塊
    Spring Cloud Alibaba Seata(原 Fescar)另外一個新增的組件是 Seata (原 Fescar,即分布式事務解決方案)。Seata 是 阿里巴巴 開源的分布式事務中間件,以高效並且對業務 0 侵入的方式,解決微服務場景下面臨的分布式事務問題。
  • Git 2.4.3 發布 - OSCHINA - 中文開源技術交流社區
    Git 2.4.3 發布,此版本更新內容包括:* Error messages from "git branch"
  • 分布式事務淺析及簡單實現
    分布式事務。分布式事務是指會涉及到操作多個資料庫的事務。其實就是將對同一庫事務的概念擴大到了對多個庫的事務。目的是為了保證分布式系統中的數據一致性。分布式事務處理的關鍵是必須有一種方法可以知道事務在任何地方所做的所有動作,提交或回滾事務的決定必須產生統一的結果(全部提交或全部回滾)比較著名的分布式事務有:2pc(兩段式提交)3pc(三段式提交)TCC(Try、Confirm、Cancel)半消息/最終一致性(RocketMQ)這裡我就介紹下最簡單的2pc(兩段式
  • 巨杉金融級分布式資料庫SequoiaDB 3.2發布,特性全面強化
    2019年5月上旬,巨杉資料庫在DTCC(2019中國資料庫技術大會)上隆重發布了旗下核心分布式資料庫產品SequliaDB 3.2版本,並就當前業內需求趨勢,資料庫的創新理念和創新之處進行了一番介紹。
  • 如何選擇分布式事務解決方案?
    圖源:《Distributed Transaction Processing:Reference Model, Version 3》 Page 32,Figure 3-2XA 規範中分布式事務是構建在 RM 本地事務(此時本地事務被看作分支事務)的基礎上的,TM 負責協調這些分支事務要麼都成功提交、要麼都回滾。
  • MongoDB 4.0 首個 RC 版發布,支持多文檔事務
    MongoDB 因其靈活的文檔模型、可擴展分布式設計廣受開發者喜愛,在此基礎上,MongoDB 4.0 推出了更強大的功能支持,目前 4.0 第一個 RC 版本已經發布。