轉載自:ShardingSphere官網數據庫
目錄apache
1、介紹架構
1. Sharding-JDBC框架
2. Sharding-Proxy運維
3. Sharding-Sidecar(TBD)分佈式
4. 混合架構ide
2、功能列表性能
1. 數據分片ui
2. 分佈式事務spa
3. 數據庫治理
3、規劃線路圖
在介紹Sharding-JDBC以前,有必要先介紹下Sharding-JDBC的你們族ShardingSphere。在介紹ShardingSphere以後,相信你們會對ShardingSphere的總體架構以及Sharding-JDBC扮演的角色會有更深的瞭解。
ShardingSphere是一套開源的分佈式數據庫中間件解決方案組成的生態圈,它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar(計劃中)這3款相互獨立的產品組成。 他們均提供標準化的數據分片、分佈式事務和數據庫治理功能,可適用於如Java同構、異構語言、容器、雲原生等各類多樣化的應用場景。
ShardingSphere定位爲關係型數據庫中間件,旨在充分合理地在分佈式的場景下利用關係型數據庫的計算和存儲能力,而並不是實現一個全新的關係型數據庫。 它與NoSQL和NewSQL是並存而非互斥的關係。NoSQL和NewSQL做爲新技術探索的前沿,放眼將來,擁抱變化,是很是值得推薦的。反之,也能夠用另外一種思路看待問題,放眼將來,關注不變的東西,進而抓住事物本質。 關係型數據庫當今依然佔有巨大市場,是各個公司核心業務的基石,將來也難於撼動,咱們目前階段更加關注在原有基礎上的增量,而非顛覆。
定位爲輕量級Java框架,在Java的JDBC層提供的額外服務。 它使用客戶端直連數據庫,以jar包形式提供服務,無需額外部署和依賴,可理解爲加強版的JDBC驅動,徹底兼容JDBC和各類ORM框架。
定位爲透明化的數據庫代理端,提供封裝了數據庫二進制協議的服務端版本,用於完成對異構語言的支持。 目前先提供MySQL版本,它可使用任何兼容MySQL協議的訪問客戶端(如:MySQL Command Client, MySQL Workbench等)操做數據,對DBA更加友好。
定位爲Kubernetes或Mesos的雲原生數據庫代理,以DaemonSet的形式代理全部對數據庫的訪問。 經過無中心、零侵入的方案提供與數據庫交互的的齧合層,即Database Mesh,又可稱數據網格。
Database Mesh的關注重點在於如何將分佈式的數據訪問應用與數據庫有機串聯起來,它更加關注的是交互,是將雜亂無章的應用與數據庫之間的交互有效的梳理。使用Database Mesh,訪問數據庫的應用和數據庫終將造成一個巨大的網格體系,應用和數據庫只需在網格體系中對號入座便可,它們都是被齧合層所治理的對象。
Sharding-JDBC | Sharding-Proxy | Sharding-Sidecar | |
數據庫 | 任意 | MySQL | MySQL |
鏈接消耗數 | 高 | 低 | 高 |
異構語言 | 僅Java | 任意 | 任意 |
性能 | 損耗低 | 損耗略高 | 損耗低 |
無中心化 | 是 | 否 | 是 |
靜態入口 | 無 | 有 | 無 |
Sharding-JDBC採用無中心化架構,適用於Java開發的高性能的輕量級OLTP應用;Sharding-Proxy提供靜態入口以及異構語言的支持,適用於OLAP應用以及對分片數據庫進行管理和運維的場景。
ShardingSphere是多接入端共同組成的生態圈。 經過混合使用Sharding-JDBC和Sharding-Proxy,並採用同一註冊中心統一配置分片策略,可以靈活的搭建適用於各類場景的應用系統,架構師能夠更加自由的調整適合於當前業務的最佳系統架構。