Apache ShardingSphere
是一款分布式的數(shù)據(jù)庫生態(tài)系統(tǒng), 可以將任意數(shù)據(jù)庫轉換為分布式數(shù)據(jù)庫,并通過數(shù)據(jù)分片、彈性伸縮、加密
等能力對原有數(shù)據(jù)庫進行增強。
設計哲學為Database Plus
,旨在構建異構數(shù)據(jù)庫上層的標準和生態(tài)。 它關注如何充分合理地利用數(shù)據(jù)庫的計算和存儲能力,而并非實現(xiàn)一個全新的數(shù)據(jù)庫。 它站在數(shù)據(jù)庫的上層視角,關注它們之間的協(xié)作多于數(shù)據(jù)庫自身。
連接:打造數(shù)據(jù)庫上層標準
通過對數(shù)據(jù)庫協(xié)議、SQL 方言以及數(shù)據(jù)庫存儲的靈活適配
,快速構建多模異構數(shù)據(jù)庫上層的標準,同時通過內(nèi)置 DistSQL 為應用提供標準化的連接方式。
增強:數(shù)據(jù)庫計算增強引擎
在原生數(shù)據(jù)庫基礎能力之上,提供分布式及流量增強方面的能力。前者可突破底層數(shù)據(jù)庫在計算與存儲上的瓶頸,后者通過對流量的變形、重定向、治理、鑒權及分析能力提供更為豐富的數(shù)據(jù)應用增強能力。
可插拔:構建數(shù)據(jù)庫功能生態(tài)
Apache ShardingSphere
的可插拔架構劃分為3
層,它們是:L1
內(nèi)核層、L2
功能層、L3
生態(tài)層。
L1 內(nèi)核層
是數(shù)據(jù)庫基本能力的抽象,其所有組件均必須存在,但具體實現(xiàn)方式可通過可插拔的方式更換。 主要包括查詢優(yōu)化器、分布式事務引擎、分布式執(zhí)行引擎、權限引擎和調(diào)度引擎等。
L2 功能層
用于提供增量能力,其所有組件均是可選的,可以包含零至多個組件。 組件之間完全隔離,互無感知,多組件可通過疊加的方式相互配合使用。 主要包括數(shù)據(jù)分片、讀寫分離、數(shù)據(jù)庫高可用、數(shù)據(jù)加密、影子庫等。 用戶自定義功能可完全面向Apache ShardingSphere
定義的頂層接口進行定制化擴展,而無需改動內(nèi)核代碼。
L3 生態(tài)層
用于對接和融入現(xiàn)有數(shù)據(jù)庫生態(tài),包括數(shù)據(jù)庫協(xié)議、SQL 解析器和存儲適配器,分別對應于Apache ShardingSphere
以數(shù)據(jù)庫協(xié)議提供服務的方式、SQL 方言操作數(shù)據(jù)的方式以及對接存儲節(jié)點的數(shù)據(jù)庫類型。
ShardingJDBC、ShardingProxy和ShardingSidecar。其中sidecar是針對service mesh定位的一個分庫分表插件,目前在規(guī)劃中。而我們今天學習的重點是ShardingSphere
的JDBC
和Proxy
這兩個組件。
ShardingJDBC
是用來做客戶端分庫分表
的產(chǎn)品,ShardingProxy
是用來做服務端分庫分表
的產(chǎn)品。這兩者定位有什么區(qū)別呢?我們看下官方資料中給出的兩個重要的圖:
shardingJDBC定位為輕量級 Java 框架,在 Java 的 JDBC 層提供的額外服務。
引入依賴
org.apache.shardingsphere sharding-jdbc-spring-boot-starter 4.1.1
ShardingSphere-Proxy 定位為透明化的數(shù)據(jù)庫代理端,通過實現(xiàn)數(shù)據(jù)庫二進制協(xié)議,對異構語言提供支持。 目前提供 MySQL 和 PostgreSQL 協(xié)議,透明化數(shù)據(jù)庫操作,對 DBA 更加友好。
MySQL/PostgreSQL
使用;MariaDB
等基于MySQL
協(xié)議的數(shù)據(jù)庫,以及openGauss
等基于PostgreSQL
協(xié)議的數(shù)據(jù)庫;MySQL/PostgreSQL
協(xié)議的的客戶端,如:MySQL Command Client, MySQL Workbench, Navicat
等。那這兩種方式有什么區(qū)別呢?
很顯然,ShardingJDBC
只是客戶端的一個工具包,可以理解為一個特殊的JDBC
驅動包,所有分庫分表邏輯均由業(yè)務方自己控制,所以他的功能相對靈活,支持的數(shù)據(jù)庫也非常多,但是對業(yè)務侵入大,需要業(yè)務方自己定制所有的分庫分表邏輯。而ShardingProxy
是一個獨立部署的服務,對業(yè)務方無侵入,業(yè)務方可以像用一個普通的MySQL
服務一樣進行數(shù)據(jù)交互,基本上感覺不到后端分庫分表邏輯的存在,但是這也意味著功能會比較固定,能夠支持的數(shù)據(jù)庫也比較少。這兩者各有優(yōu)劣。
你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧