官方文檔:http://shardingsphere.apache.org/index_zh.html
官方例子:https://github.com/apache/shardingsphere-example
1.簡單介紹(摘自官網)
Apache ShardingSphere 是一套開源的分布式數據庫中間件解決方案組成的生態圈,它由 JDBC、Proxy 和 Sidecar(規划中)這 3 款相互獨立,卻又能夠混合部署配合使用的產品組成。 它們均提供標准化的數據分片、分布式事務和數據庫治理功能,可適用於如 Java 同構、異構語言、雲原生等各種多樣化的應用場景。
Apache ShardingSphere 定位為關系型數據庫中間件,旨在充分合理地在分布式的場景下利用關系型數據庫的計算和存儲能力,而並非實現一個全新的關系型數據庫。 它通過關注不變,進而抓住事物本質。關系型數據庫當今依然占有巨大市場,是各個公司核心業務的基石,未來也難於撼動,我們目前階段更加關注在原有基礎上的增量,而非顛覆。
Apache ShardingSphere 5.x 版本開始致力於可插拔架構,項目的功能組件能夠靈活的以可插拔的方式進行擴展。 目前,數據分片、讀寫分離、多數據副本、數據加密、影子庫壓測等功能,以及 MySQL、PostgreSQL、SQLServer、Oracle 等 SQL 與協議的支持,均通過插件的方式織入項目。 開發者能夠像使用積木一樣定制屬於自己的獨特系統。Apache ShardingSphere 目前已提供數十個 SPI 作為系統的擴展點,仍在不斷增加中。
ShardingSphere 已於2020年4月16日成為 Apache 軟件基金會的頂級項目。
1.1 ShardingSphere-JDBC
定位為輕量級 Java 框架,在 Java 的 JDBC 層提供的額外服務。 它使用客戶端直連數據庫,以 jar 包形式提供服務,無需額外部署和依賴,可理解為增強版的 JDBC 驅動,完全兼容 JDBC 和各種 ORM 框架。
適用於任何基於 JDBC 的 ORM 框架,如:JPA, Hibernate, Mybatis, Spring JDBC Template 或直接使用 JDBC。
支持任何第三方的數據庫連接池,如:DBCP, C3P0, BoneCP, Druid, HikariCP 等。
支持任意實現JDBC規范的數據庫。目前支持 MySQL,Oracle,SQLServer,PostgreSQL 以及任何遵循 SQL92 標准的數據庫。

1.2 ShardingSphere-Proxy
定位為透明化的數據庫代理端,提供封裝了數據庫二進制協議的服務端版本,用於完成對異構語言的支持。 目前提供 MySQL 和 PostgreSQL 版本,它可以使用任何兼容 MySQL/PostgreSQL 協議的訪問客戶端(如:MySQL Command Client, MySQL Workbench, Navicat 等)操作數據,對 DBA 更加友好。
(1)向應用程序完全透明,可直接當做 MySQL/PostgreSQL 使用。
(2)適用於任何兼容 MySQL/PostgreSQL 協議的的客戶端。

1.3 ShardingSphere-Sidecar(TODO)
定位為 Kubernetes 的雲原生數據庫代理,以 Sidecar 的形式代理所有對數據庫的訪問。 通過無中心、零侵入的方案提供與數據庫交互的的嚙合層,即 Database Mesh,又可稱數據庫網格。
Database Mesh 的關注重點在於如何將分布式的數據訪問應用與數據庫有機串聯起來,它更加關注的是交互,是將雜亂無章的應用與數據庫之間的交互有效的梳理。 使用 Database Mesh,訪問數據庫的應用和數據庫終將形成一個巨大的網格體系,應用和數據庫只需在網格體系中對號入座即可,它們都是被嚙合層所治理的對象。

對比如下:

2.功能列表如下

