知道這個框架是經過一期QQ課堂git
https://shardingsphere.apache.org 官網github
https://github.com/apache/incubator-shardingsphere github庫數據庫
https://shardingsphere.apache.org/document/current/cn/overview/ 中文文檔apache
https://shardingsphere.apache.org/community/cn/contribute/ 社區架構
介紹:框架
Apache ShardingSphere (Incubator) 是一套開源的分佈式數據庫中間件解決方案組成的生態圈, 它由Sharding-JDBC, Sharding-Proxy和 Sharding-Sidecar (規劃中) 這3款相互獨立,運維
卻又可以混合部署使用的產品組成. 它們均提供標準化的數據分片, 分佈式事務和數據庫治理功能,可適用於如Java同構, 異構語言,容器, 雲原生等各類多樣化的應用場景.分佈式
ShardingSphere定位爲關係型數據庫中間件, 旨在充分合理地在分佈式的場景下利用關係型數據庫的計算和存儲能力, 而並不是實現一個全新的關係型數據庫. 它經過關注不變, 進而抓住ide
事物本質. 關係型數據庫當今依然佔有巨大市場, 是各個公司核心業務的基石, 將來也難以撼動, 咱們目前階段更加關注在原有基礎上的增量, 而非顛覆.性能
目前全部的可用發佈都是進入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