潛山云建站網(wǎng)站建設(shè)東莞網(wǎng)絡(luò)推廣
ShardingSphere從4.X到5.X的內(nèi)容發(fā)生了很多的改變,感興趣的伙伴可以到ShardingSphere的博客查看各個(gè)版本的新特性。https://blog.csdn.net/ShardingSphere?type=blog
此次使用最新版本 shardingShpere5.4.0,實(shí)現(xiàn)數(shù)據(jù)庫(kù)讀寫分離、數(shù)據(jù)分片、分布式事務(wù)等功能
1、簡(jiǎn)介
官網(wǎng):https://shardingsphere.apache.org/index_zh.html
文檔:https://shardingsphere.apache.org/document/5.4.0/cn/overview/
Apache ShardingSphere 是一款分布式的數(shù)據(jù)庫(kù)生態(tài)系統(tǒng), 可以將任意數(shù)據(jù)庫(kù)轉(zhuǎn)換為分布式數(shù)據(jù)庫(kù),并通過數(shù)據(jù)分片、彈性伸縮、加密等能力對(duì)原有數(shù)據(jù)庫(kù)進(jìn)行增強(qiáng)。
Apache ShardingSphere 設(shè)計(jì)哲學(xué)為 Database Plus,旨在構(gòu)建異構(gòu)數(shù)據(jù)庫(kù)上層的標(biāo)準(zhǔn)和生態(tài)。 它關(guān)注如何充分合理地利用數(shù)據(jù)庫(kù)的計(jì)算和存儲(chǔ)能力,而并非實(shí)現(xiàn)一個(gè)全新的數(shù)據(jù)庫(kù)。 它站在數(shù)據(jù)庫(kù)的上層視角,關(guān)注它們之間的協(xié)作多于數(shù)據(jù)庫(kù)自身。
產(chǎn)品功能
特性 | 定義 |
---|---|
數(shù)據(jù)分片 | 數(shù)據(jù)分片,是應(yīng)對(duì)海量數(shù)據(jù)存儲(chǔ)與計(jì)算的有效手段。ShardingSphere 基于底層數(shù)據(jù)庫(kù)提供分布式數(shù)據(jù)庫(kù)解決方案,可以水平擴(kuò)展計(jì)算和存儲(chǔ)。 |
分布式事務(wù) | 事務(wù)能力,是保障數(shù)據(jù)庫(kù)完整、安全的關(guān)鍵技術(shù),也是數(shù)據(jù)庫(kù)的核心技術(shù)。基于 XA 和 BASE 的混合事務(wù)引擎,ShardingSphere 提供在獨(dú)立數(shù)據(jù)庫(kù)上的分布式事務(wù)功能,保證跨數(shù)據(jù)源的數(shù)據(jù)安全。 |
讀寫分離 | 讀寫分離,是應(yīng)對(duì)高壓力業(yè)務(wù)訪問的手段?;趯?duì) SQL 語(yǔ)義理解及對(duì)底層數(shù)據(jù)庫(kù)拓?fù)涓兄芰?#xff0c;ShardingSphere 提供靈活的讀寫流量拆分和讀流量負(fù)載均衡。 |
數(shù)據(jù)遷移 | 數(shù)據(jù)遷移,是打通數(shù)據(jù)生態(tài)的關(guān)鍵能力。ShardingSphere 提供跨數(shù)據(jù)源的數(shù)據(jù)遷移能力,并可支持重分片擴(kuò)展。 |
聯(lián)邦查詢 | 聯(lián)邦查詢,是面對(duì)復(fù)雜數(shù)據(jù)環(huán)境下利用數(shù)據(jù)的有效手段。ShardingSphere 提供跨數(shù)據(jù)源的復(fù)雜查詢分析能力,實(shí)現(xiàn)跨源的數(shù)據(jù)關(guān)聯(lián)與聚合。 |
數(shù)據(jù)加密 | 數(shù)據(jù)加密,是保證數(shù)據(jù)安全的基本手段。ShardingSphere 提供完整、透明、安全、低成本的數(shù)據(jù)加密解決方案。 |
影子庫(kù) | 在全鏈路壓測(cè)場(chǎng)景下,ShardingSphere 支持不同工作負(fù)載下的數(shù)據(jù)隔離,避免測(cè)試數(shù)據(jù)污染生產(chǎn)環(huán)境。 |
產(chǎn)品優(yōu)勢(shì)
- 極致性能
驅(qū)動(dòng)程序端歷經(jīng)長(zhǎng)年打磨,效率接近原生 JDBC,性能極致。
- 生態(tài)兼容
代理端支持任何通過 MySQL/PostgreSQL 協(xié)議的應(yīng)用訪問,驅(qū)動(dòng)程序端可對(duì)接任意實(shí)現(xiàn) JDBC 規(guī)范的數(shù)據(jù)庫(kù)。
- 業(yè)務(wù)零侵入
面對(duì)數(shù)據(jù)庫(kù)替換場(chǎng)景,ShardingSphere 可滿足業(yè)務(wù)無(wú)需改造,實(shí)現(xiàn)平滑業(yè)務(wù)遷移。
- 運(yùn)維低成本
在保留原技術(shù)棧不變前提下,對(duì) DBA 學(xué)習(xí)、管理成本低,交互友好。
- 安全穩(wěn)定
基于成熟數(shù)據(jù)庫(kù)底座之上提供增量能力,兼顧安全性及穩(wěn)定性。
- 彈性擴(kuò)展
具備計(jì)算、存儲(chǔ)平滑在線擴(kuò)展能力,可滿足業(yè)務(wù)多變的需求。
- 開放生態(tài)
通過多層次(內(nèi)核、功能、生態(tài))插件化能力,為用戶提供可定制滿足自身特殊需求的獨(dú)有系統(tǒng)。
ShardingSphere 采用 Database Plus 設(shè)計(jì)哲學(xué),該理念致力于構(gòu)建數(shù)據(jù)庫(kù)上層的標(biāo)準(zhǔn)和生態(tài),在生態(tài)中補(bǔ)充數(shù)據(jù)庫(kù)所缺失的能力。
連接:打造數(shù)據(jù)庫(kù)上層標(biāo)準(zhǔn)
通過對(duì)數(shù)據(jù)庫(kù)協(xié)議、SQL 方言以及數(shù)據(jù)庫(kù)存儲(chǔ)的靈活適配,快速構(gòu)建多模異構(gòu)數(shù)據(jù)庫(kù)上層的標(biāo)準(zhǔn),同時(shí)通過內(nèi)置 DistSQL 為應(yīng)用提供標(biāo)準(zhǔn)化的連接方式。
增強(qiáng):數(shù)據(jù)庫(kù)計(jì)算增強(qiáng)引擎
在原生數(shù)據(jù)庫(kù)基礎(chǔ)能力之上,提供分布式及流量增強(qiáng)方面的能力。前者可突破底層數(shù)據(jù)庫(kù)在計(jì)算與存儲(chǔ)上的瓶頸,后者通過對(duì)流量的變形、重定向、治理、鑒權(quán)及分析能力提供更為豐富的數(shù)據(jù)應(yīng)用增強(qiáng)能力。
可插拔:構(gòu)建數(shù)據(jù)庫(kù)功能生態(tài)
部署形態(tài)
Apache ShardingSphere 由 ShardingSphere-JDBC 和 ShardingSphere-Proxy 這 2 款既能夠獨(dú)立部署,又支持混合部署配合使用的產(chǎn)品組成。 它們均提供標(biāo)準(zhǔn)化的基于數(shù)據(jù)庫(kù)作為存儲(chǔ)節(jié)點(diǎn)的增量功能,可適用于如 Java 同構(gòu)、異構(gòu)語(yǔ)言、云原生等各種多樣化的應(yīng)用場(chǎng)景。
ShardingSphere-JDBC 獨(dú)立部署
ShardingSphere-JDBC 定位為輕量級(jí) Java 框架,在 Java 的 JDBC 層提供的額外服務(wù)。 它使用客戶端直連數(shù)據(jù)庫(kù),以 jar 包形式提供服務(wù),無(wú)需額外部署和依賴,可理解為增強(qiáng)版的 JDBC 驅(qū)動(dòng),完全兼容 JDBC 和各種 ORM 框架。
- 適用于任何基于 JDBC 的 ORM 框架,如:JPA, Hibernate, Mybatis, Spring JDBC Template 或直接使用 JDBC;
- 支持任何第三方的數(shù)據(jù)庫(kù)連接池,如:DBCP, C3P0, BoneCP, HikariCP 等;
- 支持任意實(shí)現(xiàn) JDBC 規(guī)范的數(shù)據(jù)庫(kù),目前支持 MySQL,PostgreSQL,Oracle,SQLServer 以及任何可使用 JDBC 訪問的數(shù)據(jù)庫(kù)。
ShardingSphere-Proxy 獨(dú)立部署
ShardingSphere-Proxy 定位為透明化的數(shù)據(jù)庫(kù)代理端,通過實(shí)現(xiàn)數(shù)據(jù)庫(kù)二進(jìn)制協(xié)議,對(duì)異構(gòu)語(yǔ)言提供支持。 目前提供 MySQL 和 PostgreSQL 協(xié)議,透明化數(shù)據(jù)庫(kù)操作,對(duì) DBA 更加友好。
- 向應(yīng)用程序完全透明,可直接當(dāng)做 MySQL/PostgreSQL 使用;
- 兼容 MariaDB 等基于 MySQL 協(xié)議的數(shù)據(jù)庫(kù),以及 openGauss 等基于 PostgreSQL 協(xié)議的數(shù)據(jù)庫(kù);
- 適用于任何兼容 MySQL/PostgreSQL 協(xié)議的的客戶端,如:MySQL Command Client, MySQL Workbench, Navicat 等。
ShardingSphere-JDBC | ShardingSphere-Proxy | |
---|---|---|
數(shù)據(jù)庫(kù) | 任意 | MySQL/PostgreSQL |
連接消耗數(shù) | 高 | 低 |
異構(gòu)語(yǔ)言 | 僅 Java | 任意 |
性能 | 損耗低 | 損耗略高 |
無(wú)中心化 | 是 | 否 |
靜態(tài)入口 | 無(wú) | 有 |
混合部署架構(gòu)
ShardingSphere-JDBC 采用無(wú)中心化架構(gòu),與應(yīng)用程序共享資源,適用于 Java 開發(fā)的高性能的輕量級(jí) OLTP 應(yīng)用; ShardingSphere-Proxy 提供靜態(tài)入口以及異構(gòu)語(yǔ)言的支持,獨(dú)立于應(yīng)用程序部署,適用于 OLAP 應(yīng)用以及對(duì)分片數(shù)據(jù)庫(kù)進(jìn)行管理和運(yùn)維的場(chǎng)景。
Apache ShardingSphere 是多接入端共同組成的生態(tài)圈。 通過混合使用 ShardingSphere-JDBC 和 ShardingSphere-Proxy,并采用同一注冊(cè)中心統(tǒng)一配置分片策略,能夠靈活的搭建適用于各種場(chǎng)景的應(yīng)用系統(tǒng),使得架構(gòu)師更加自由地調(diào)整適合于當(dāng)前業(yè)務(wù)的最佳系統(tǒng)架構(gòu)。
運(yùn)行模式
Apache ShardingSphere 提供了兩種運(yùn)行模式,分別是單機(jī)模式和集群模式。
單機(jī)模式
能夠?qū)?shù)據(jù)源和規(guī)則等元數(shù)據(jù)信息持久化,但無(wú)法將元數(shù)據(jù)同步至多個(gè) Apache ShardingSphere 實(shí)例,無(wú)法在集群環(huán)境中相互感知。 通過某一實(shí)例更新元數(shù)據(jù)之后,會(huì)導(dǎo)致其他實(shí)例由于獲取不到最新的元數(shù)據(jù)而產(chǎn)生不一致的錯(cuò)誤。
適用于工程師在本地搭建 Apache ShardingSphere 環(huán)境。
集群模式
提供了多個(gè) Apache ShardingSphere 實(shí)例之間的元數(shù)據(jù)共享和分布式場(chǎng)景下狀態(tài)協(xié)調(diào)的能力。 它能夠提供計(jì)算能力水平擴(kuò)展和高可用等分布式系統(tǒng)必備的能力,集群環(huán)境需要通過獨(dú)立部署的注冊(cè)中心來存儲(chǔ)元數(shù)據(jù)和協(xié)調(diào)節(jié)點(diǎn)狀態(tài)。
在生產(chǎn)環(huán)境建議使用集群模式。
線路規(guī)劃
Apache ShardingSphere 實(shí)例之間的元數(shù)據(jù)共享和分布式場(chǎng)景下狀態(tài)協(xié)調(diào)的能力。 它能夠提供計(jì)算能力水平擴(kuò)展和高可用等分布式系統(tǒng)必備的能力,集群環(huán)境需要通過獨(dú)立部署的注冊(cè)中心來存儲(chǔ)元數(shù)據(jù)和協(xié)調(diào)節(jié)點(diǎn)狀態(tài)。
在生產(chǎn)環(huán)境建議使用集群模式。