知道這個框架是通過一期QQ課堂
https://shardingsphere.apache.org 官網
https://github.com/apache/incubator-shardingsphere github庫
https://shardingsphere.apache.org/document/current/cn/overview/ 中文文檔
https://shardingsphere.apache.org/community/cn/contribute/ 社區
介紹:
Apache ShardingSphere (Incubator) 是一套開源的分布式數據庫中間件解決方案組成的生態圈, 它由Sharding-JDBC, Sharding-Proxy和 Sharding-Sidecar (規划中) 這3款相互獨立,
卻又能夠混合部署使用的產品組成. 它們均提供標准化的數據分片, 分布式事務和數據庫治理功能,可適用於如Java同構, 異構語言,容器, 雲原生等各種多樣化的應用場景.
ShardingSphere定位為關系型數據庫中間件, 旨在充分合理地在分布式的場景下利用關系型數據庫的計算和存儲能力, 而並非實現一個全新的關系型數據庫. 它通過關注不變, 進而抓住
事物本質. 關系型數據庫當今依然占有巨大市場, 是各個公司核心業務的基石, 未來也難以撼動, 我們目前階段更加關注在原有基礎上的增量, 而非顛覆.
目前所有的可用發布都是進入Apache孵化器之前的發布版本, Apache官方發布將從4.0.0版本開始.
## 數據分片
分庫 & 分表
讀寫分離
分片策略定制化
無中心化分布式主鍵
## 分布式事務
從本地事務接口自動對接分布式事務
XA事務和柔性事務自由切換
原生數據源接口自動轉換XA接口
柔性事務自動補償, 無需用戶實現補償接口
## 數據庫治理
服務治理
* 配置動態化
* 高可用
* 熔斷 & 禁用
數據治理
* 數據脫敏
* 權限
可觀察性
* APM
* 鏈路追蹤
* 調用拓撲
* OpenTracing對接
彈性伸縮(規划中)
其github庫更新也是比較活躍,我關注時最新更新是 2 days ago
在社區中查看采用公司,可以看到有 當當, 唯品會, 58同城, 京東金融, 天涯社區, 廣西壯族自治區國土資源信息中心, 開課啦 ... 等比較知名公司.
其中該框架是最早由 當當 提供給了Apache基金會.
概覽:
Sharding-JDBC
該組件定位為輕量級Java框架, 在Java的JDBC層提供的額外服務. 它適用客戶端直連數據庫,以jar包形式提供服務,
無需額外部署和依賴, 可理解為增強版的JDBC驅動, 完全兼容JDBC和各種ORM框架.
### 特點
* 適用於任何基於Java的ORM框架,如: JPA, Hibernate, MyBatis, Spring JDBC Template 或直接適用JDBC.
* 基於任何第三方的數據庫連接池, 如: DBCP, C3P0, BoneCP, Druid, HikariCP 等.
* 支持任意實現JDBC規范的數據庫. 目前支持MySQL, Oracle, SQLServer 和 PostgreSQL.
Sharding-Proxy
定位為透明化的數據庫代理端, 提供封裝了數據庫二進制協議的服務端版本,用於完成對異構語言的支持. 目前先提供MySQL版本,
它可以使用任何兼容MySQL協議的訪問客戶端(如: MySQL Command Client, MySQL Workbench等)操作數據, 對DBA更加友好.
* 向應用程序完全透明, 可直接當作MySQL使用.
* 適用於任何兼容MySQL協議的客戶端.
Sharding-Sidecar(TBD)
定位為Kubernetes或Mesos的雲原生數據庫代理, 以DaemonSet的形式代理所有對數據庫的訪問.
通過無中心, 零侵入的方案提供與數據庫交互的嚙合層, 即 Database Mesh , 又可稱數據網格.
Database Mesh的關注重點在於如何將分布式的數據訪問應用與數據庫有機串聯起來,它更加關注
的是交互, 是將雜亂無章的應用與數據庫之間的交互有效的梳理. 使用Database Mesh,訪問數據庫
的應用和數據庫終將形成一個巨大的網格體系, 應用和數據庫只需在網格體系中對號入座即可,它們
都是被嚙合層所治理的對象.
模塊區別點:
混合架構
Sharding-JDBC采用無中心化架構,適用於Java開發的高性能的輕量級OLTP應用;
Sharding-Proxy提供靜態入口以及異構語言的支持,適用於OLAP應用以及對分片數據庫進行管理和運維的場景.
ShardingSphere是多接入端共同組成的生態圈. 通過混合使用Sharding-JDBC和Sharding-Proxy,並采用同一注冊中心統一配置分片策略,
能夠靈活的搭建適用於各種場景的應用系統,架構師可以更加自由的調整適用於當前業務的最佳系統架構.
規划線路圖
下一篇:着重介紹Sharding-JDBC 以及 簡單demo