ShardingSphere x Seata,一致性更強的分散式資料庫中介軟體
日前,分散式資料庫中介軟體 ShardingSphere 將 Seata 分散式事務能力進行整合,旨在打造一致性更強的分散式資料庫中介軟體。
背景
資料庫領域,分散式事務的實現主要包含:兩階段的 XA 和 BASE 柔性事務。
XA 事務底層,依賴於具體的資料庫廠商對 XA 兩階段提交協議的支援。通常,XA 協議通過在 Prepare 和 Commit 階段進行 2PL(2 階段鎖),保證了分散式事務的 ACID,適用於短事務及非雲化環境(雲化環境下一次 IO 操作大概需要 20ms,兩階段鎖會鎖住資源長達 40ms,因此熱點行上的事務的 TPS 會降到 25/s 左右,非雲化環境通常一次 IO 只需幾毫秒,因此鎖熱點資料的時間相對較低)。
但在 BASE 柔性事務方面,ShardingSphere 提供的接入分散式事務的 SPI,只適用於對效能要求較高,對一致性要求比較低的業務。
Seata 核心的 AT 模式適用於構建於支援本地 ACID 事務的關係型資料庫。通過整合 Seata,其 AT 模式在一階段提交+補償的基礎上,通過 TC 的全域性鎖實現了 RC 隔離級別的支援,可提高 ShardingSphere 的分散式事務的一致性。
整合方案
整合 Seata AT 事務時,需要把 TM,RM,TC 的模型融入到 ShardingSphere 分散式事務的 SPI 的生態中。在資料庫資源上,Seata 通過對接 DataSource 介面,讓 JDBC 操作可以同 TC 進行 RPC 通訊。同樣,ShardingSphere 也是面向 DataSource 介面對使用者配置的物理 DataSource 進行了聚合,因此把物理 DataSource 二次包裝為 Seata 的 DataSource 後,就可以把 Seata AT 事務融入到 ShardingSphere 的分片中。
在 Seata 模型中,全域性事務的上下文存放線上程變數中,通過擴充套件服務間的 transport,可以完成執行緒變數的傳遞,分支事務通過執行緒變數判斷是否加入到整個 Seata 全域性事務中。而 ShardingSphere 的分片執行引擎通常是按多執行緒執行,因此整合 Seata AT 事務時,需要擴充套件主執行緒和子執行緒的事務上下文傳遞,這同服務間的上下文傳遞思路完全相同。
Quick Start
ShardingSphere 已經實現了 base-seata-raw-jdbc-example,大家可以自行進行嘗試:
操作手冊:
1、按照 seata-work-shop 中的步驟,下載並啟動 seata server。
https://github.com/seata/seata-workshop
參考 Step6 和 Step7 即可。
2、在每一個分片資料庫例項中執行 resources/sql/undo_log.sql 指令碼,建立 undo_log 表
3、Run YamlConfigurationTransactionExample.java
關於 ShardingSphere
ShardingSphere 是一套開源的分散式資料庫中介軟體解決方案組成的生態圈,它由 Sharding-JDBC、Sharding-Proxy 和 Sharding-Sidecar(計劃中)這 3 款相互獨立的產品組成,提供標準化的資料分片、分散式事務和資料庫治理功能,可適用於如 Java 同構、異構語言、容器、雲原生等各種多樣化的應用場景。目前,已經擁有超過 8000 的 Star,57 位 Contributors。
關於 Seata
Seata 是阿里巴巴和螞蟻金服共同開源的分散式事務中介軟體,融合了雙方在分散式事務技術上的積累,並沉澱了新零售、雲端計算和新金融等場景下豐富的實踐經驗,以高效並且對業務 0 侵入的方式,解決微服務場景下面臨的分散式事務問題。目前,已經擁有超過 9900 的 Star,83 位 Contributors。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69904796/viewspace-2655932/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Apache ShardingSphere:由開源驅動的分散式資料庫中介軟體生態Apache分散式資料庫
- 分散式事務中介軟體Seata的設計原理分散式
- 分散式資料庫中介軟體 MyCat 搞起來!分散式資料庫
- 分散式資料庫中介軟體 MyCat | 分庫分表實踐分散式資料庫
- 原生分散式資料庫與子資料庫子表中介軟體的區別分散式資料庫
- 基於 ShardingSphere 的得物資料庫中介軟體平臺演進之路資料庫
- 分散式資料庫中介軟體的實現原理介紹一:分庫分表分散式資料庫
- 分散式訊息中介軟體分散式
- ShardingSphere如何輕鬆駕馭Seata柔性分散式事務?分散式
- 分散式強一致性資料庫的靈魂 - Raft 演算法分散式資料庫Raft演算法
- 分散式強一致性資料庫的靈魂 – Raft 演算法分散式資料庫Raft演算法
- 基於 Apache ShardingSphere 構建高可用分散式資料庫Apache分散式資料庫
- 資料庫中介軟體詳解資料庫
- 中介軟體---分散式跟蹤---Pinpoint分散式
- LAF-DTX分散式事務中介軟體分散式
- 中介軟體---分散式任務排程---Celery分散式
- Seata-AT 如何保證分散式事務一致性分散式
- 墨天輪沙龍 | SphereEx代野:Apache ShardingSphere-從中介軟體到分散式生態演進之路Apache分散式
- 為什麼你要使用這麼強大的分散式訊息中介軟體——kafka分散式Kafka
- 深入理解阿里分散式訊息中介軟體阿里分散式
- 分散式資料庫強勢崛起,達夢資料庫如何破局?分散式資料庫
- 微服務分散式事務解決方案-開源軟體seata微服務分散式
- MyCat的坑如何在分散式中介軟體DBLE上改善分散式
- DB資料庫中分散式一致性演算法資料庫分散式演算法
- 分散式資料庫分散式資料庫
- 分散式 SQL 使資料庫更上一層樓 - thenewstack分散式SQL資料庫
- seata 分散式事務分散式
- 更開放的分散式事務 | 螞蟻金服共建 Seata 社群分散式
- CECTC/dbpack: 用Golang編寫的分散式事務中介軟體Golang分散式
- (二) MdbCluster分散式記憶體資料庫——分散式架構1分散式記憶體資料庫架構
- 分散式快取--快取與資料庫一致性方案分散式快取資料庫
- 分散式資料庫 ZNBase 的分散式計劃生成分散式資料庫
- 資料庫系列:業內主流MySQL資料中介軟體梳理資料庫MySql
- [分散式][訊息中介軟體]訊息中介軟體如何實現每秒幾十萬的高併發寫入分散式
- 資料庫新兵:分散式實時分析記憶體資料庫eSight資料庫分散式記憶體
- 資料庫路由中介軟體MyCat - 原始碼篇(15)資料庫路由原始碼
- 談談“資料庫中介軟體”生態與發展資料庫
- 滴滴開源分散式訊息中介軟體產品DDMQ分散式MQ