Sharding-JDBC介紹
Sharding-JDBC是當當網研發的開源分布式數據庫中間件,從 3.0 開始Sharding-JDBC被包含在 Sharding-Sphere 中,之后該項目進入Apache孵化器,4.0版本之后的版本為Apache版本。
ShardingSphere是一套開源的分布式數據庫中間件解決方案組成的生態圈,它由Sharding-JDBC、ShardingProxy和Sharding-Sidecar(計划中)這3款相互獨立的產品組成。 他們均提供標准化的數據分片、分布式事務和數據庫治理功能,可適用於如Java同構、異構語言、容器、雲原生等各種多樣化的應用場景。
官方地址:https://shardingsphere.apache.org/document/current/cn/overview/
咱們目前只需關注Sharding-JDBC,它定位為輕量級Java框架,在Java的JDBC層提供的額外服務。 它使用客戶端直連數據庫,以jar包形式提供服務,無需額外部署和依賴,可理解為增強版的JDBC驅動,完全兼容JDBC和各種ORM框架。
Sharding-JDBC的核心功能為數據分片和讀寫分離,通過Sharding-JDBC,應用可以透明的使用jdbc訪問已經分庫分表、讀寫分離的多個數據源,而不用關心數據源的數量以及數據如何分布。
- 適用於任何基於Java的ORM框架,如: Hibernate, Mybatis, Spring JDBC Template或直接使用JDBC。
- 基於任何第三方的數據庫連接池,如:DBCP, C3P0, BoneCP, Druid, HikariCP等。
- 支持任意實現JDBC規范的數據庫。目前支持MySQL,Oracle,SQLServer和PostgreSQL。
上圖展示了Sharding-Jdbc的工作方式,使用Sharding-Jdbc前需要人工對數據庫進行分庫分表,在應用程序中加入Sharding-Jdbc的Jar包,應用程序通過Sharding-Jdbc操作分庫分表后的數據庫和數據表,由於Sharding-Jdbc是對Jdbc驅動的增強,使用Sharding-Jdbc就像使用Jdbc驅動一樣,在應用程序中是無需指定具體要操作的分庫和分表的。
與jdbc性能對比
1. 性能損耗測試:服務器資源充足、並發數相同,比較JDBC和Sharding-JDBC性能損耗,Sharding-JDBC相對JDBC損耗不超過7%。
2. 性能對比測試:服務器資源使用到極限,相同的場景JDBC與Sharding-JDBC的吞吐量相當。
3. 性能對比測試:服務器資源使用到極限,Sharding-JDBC采用分庫分表后,Sharding-JDBC吞吐量較JDBC不分表有接近2倍的提升。