Sharding-JDBC(一)简介
轉(zhuǎn)載自:ShardingSphere官網(wǎng)
目錄
一、介紹
1. Sharding-JDBC
2. Sharding-Proxy
3. Sharding-Sidecar(TBD)
4. 混合架構(gòu)
二、功能列表
1. 數(shù)據(jù)分片
2. 分布式事務(wù)
3. 數(shù)據(jù)庫(kù)治理
三、規(guī)劃線(xiàn)路圖
?
在介紹Sharding-JDBC之前,有必要先介紹下Sharding-JDBC的大家族ShardingSphere。在介紹ShardingSphere之后,相信大家會(huì)對(duì)ShardingSphere的整體架構(gòu)以及Sharding-JDBC扮演的角色會(huì)有更深的了解。
ShardingSphere是一套開(kāi)源的分布式數(shù)據(jù)庫(kù)中間件解決方案組成的生態(tài)圈,它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar(計(jì)劃中)這3款相互獨(dú)立的產(chǎn)品組成。 他們均提供標(biāo)準(zhǔn)化的數(shù)據(jù)分片、分布式事務(wù)和數(shù)據(jù)庫(kù)治理功能,可適用于如Java同構(gòu)、異構(gòu)語(yǔ)言、容器、云原生等各種多樣化的應(yīng)用場(chǎng)景。
ShardingSphere定位為關(guān)系型數(shù)據(jù)庫(kù)中間件,旨在充分合理地在分布式的場(chǎng)景下利用關(guān)系型數(shù)據(jù)庫(kù)的計(jì)算和存儲(chǔ)能力,而并非實(shí)現(xiàn)一個(gè)全新的關(guān)系型數(shù)據(jù)庫(kù)。 它與NoSQL和NewSQL是并存而非互斥的關(guān)系。NoSQL和NewSQL作為新技術(shù)探索的前沿,放眼未來(lái),擁抱變化,是非常值得推薦的。反之,也可以用另一種思路看待問(wèn)題,放眼未來(lái),關(guān)注不變的東西,進(jìn)而抓住事物本質(zhì)。 關(guān)系型數(shù)據(jù)庫(kù)當(dāng)今依然占有巨大市場(chǎng),是各個(gè)公司核心業(yè)務(wù)的基石,未來(lái)也難于撼動(dòng),我們目前階段更加關(guān)注在原有基礎(chǔ)上的增量,而非顛覆。
一、介紹
1. Sharding-JDBC
定位為輕量級(jí)Java框架,在Java的JDBC層提供的額外服務(wù)。 它使用客戶(hù)端直連數(shù)據(jù)庫(kù),以jar包形式提供服務(wù),無(wú)需額外部署和依賴(lài),可理解為增強(qiáng)版的JDBC驅(qū)動(dòng),完全兼容JDBC和各種ORM框架。
- 適用于任何基于Java的ORM框架,如:JPA, Hibernate, Mybatis, Spring JDBC Template或直接使用JDBC。
- 基于任何第三方的數(shù)據(jù)庫(kù)連接池,如:DBCP, C3P0, BoneCP, Druid, HikariCP等。
- 支持任意實(shí)現(xiàn)JDBC規(guī)范的數(shù)據(jù)庫(kù)。目前支持MySQL,Oracle,SQLServer和PostgreSQL。
?
2. Sharding-Proxy
定位為透明化的數(shù)據(jù)庫(kù)代理端,提供封裝了數(shù)據(jù)庫(kù)二進(jìn)制協(xié)議的服務(wù)端版本,用于完成對(duì)異構(gòu)語(yǔ)言的支持。 目前先提供MySQL版本,它可以使用任何兼容MySQL協(xié)議的訪(fǎng)問(wèn)客戶(hù)端(如:MySQL Command Client, MySQL Workbench等)操作數(shù)據(jù),對(duì)DBA更加友好。
- 向應(yīng)用程序完全透明,可直接當(dāng)做MySQL使用。
- 適用于任何兼容MySQL協(xié)議的客戶(hù)端。
3. Sharding-Sidecar(TBD)
定位為Kubernetes或Mesos的云原生數(shù)據(jù)庫(kù)代理,以DaemonSet的形式代理所有對(duì)數(shù)據(jù)庫(kù)的訪(fǎng)問(wèn)。 通過(guò)無(wú)中心、零侵入的方案提供與數(shù)據(jù)庫(kù)交互的的嚙合層,即Database Mesh,又可稱(chēng)數(shù)據(jù)網(wǎng)格。
Database Mesh的關(guān)注重點(diǎn)在于如何將分布式的數(shù)據(jù)訪(fǎng)問(wèn)應(yīng)用與數(shù)據(jù)庫(kù)有機(jī)串聯(lián)起來(lái),它更加關(guān)注的是交互,是將雜亂無(wú)章的應(yīng)用與數(shù)據(jù)庫(kù)之間的交互有效的梳理。使用Database Mesh,訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)的應(yīng)用和數(shù)據(jù)庫(kù)終將形成一個(gè)巨大的網(wǎng)格體系,應(yīng)用和數(shù)據(jù)庫(kù)只需在網(wǎng)格體系中對(duì)號(hào)入座即可,它們都是被嚙合層所治理的對(duì)象。
?
?
| ? | Sharding-JDBC | Sharding-Proxy | Sharding-Sidecar |
| 數(shù)據(jù)庫(kù) | 任意 | MySQL | MySQL |
| 連接消耗數(shù) | 高 | 低 | 高 |
| 異構(gòu)語(yǔ)言 | 僅Java | 任意 | 任意 |
| 性能 | 損耗低 | 損耗略高 | 損耗低 |
| 無(wú)中心化 | 是 | 否 | 是 |
| 靜態(tài)入口 | 無(wú) | 有 | 無(wú) |
?4. 混合架構(gòu)
Sharding-JDBC采用無(wú)中心化架構(gòu),適用于Java開(kāi)發(fā)的高性能的輕量級(jí)OLTP應(yīng)用;Sharding-Proxy提供靜態(tài)入口以及異構(gòu)語(yǔ)言的支持,適用于OLAP應(yīng)用以及對(duì)分片數(shù)據(jù)庫(kù)進(jìn)行管理和運(yùn)維的場(chǎng)景。
ShardingSphere是多接入端共同組成的生態(tài)圈。 通過(guò)混合使用Sharding-JDBC和Sharding-Proxy,并采用同一注冊(cè)中心統(tǒng)一配置分片策略,能夠靈活的搭建適用于各種場(chǎng)景的應(yīng)用系統(tǒng),架構(gòu)師可以更加自由的調(diào)整適合于當(dāng)前業(yè)務(wù)的最佳系統(tǒng)架構(gòu)。
二、功能列表
1.?數(shù)據(jù)分片
- 分庫(kù) & 分表
- 讀寫(xiě)分離
- 分片策略定制化
- 無(wú)中心化分布式主鍵
?2.?分布式事務(wù)
- 標(biāo)準(zhǔn)化事務(wù)接口
- XA強(qiáng)一致事務(wù)
- 柔性事務(wù)
?3.?數(shù)據(jù)庫(kù)治理
- 配置動(dòng)態(tài)化
- 編排 & 治理
- 數(shù)據(jù)脫敏
- 可視化鏈路追蹤
- 彈性伸縮(規(guī)劃中)
?三、規(guī)劃線(xiàn)路圖
總結(jié)
以上是生活随笔為你收集整理的Sharding-JDBC(一)简介的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: MySQL的limit用法和分页查询的性
- 下一篇: Sharding-JDBC(二)2.0.