一、NewSQL的概念
NewSQL的概念,最開始來源于國外的一份商業分析報告。它是各種新的可擴展/高性能數據庫的簡稱,這類數據庫不僅具有NoSQL海量數據的存儲管理能力,還保持了傳統數據庫支持ACID和SQL等特性。
提及SQL,很多朋友最先想到的就是MySQL數據庫和PostgreSQL數據庫。對我們來說,它其實一個單點、很可靠,有ACID事務,也有查詢語言的關系型數據庫。其中,ACID事務和查詢語言是我們最關心的兩點。
伴隨互聯網的蓬勃發展,數據量的持續膨脹,NoSQL出現了。NoSQL泛指非關系型數據庫,具備Scalability(擴展性)和Resilience(彈性)。擴展性是指可以無限的把一個單點變成一個集群,從而提升整個系統的可用性。彈性保證了在宕機集群崩潰后,數據的自動修復且上層業務無感知。
那么就有人提出來了,我能不能既可以擁有像SQL的關系模型,擁有它的ACID事務,同時還擁有像NoSQL的擴展性、彈性伸縮,以及高可用性。于是,NewSQL應運而生,它最開始的定義就叫做Scalability SQL。
在分布式的場景中,沒有辦法同時保證Consistency(一致性)和Availability(可用性),以及分區的容錯性。CAP原則就是,你只能保證整個系統更關注于強一致性,或者高可用性。
綜上所述,NewSQL是為了綜合SQL和NoSQL的特性。它的存在并不是完全顛覆了CAP理論,而是需要基于這套理論,根據我們自身的實際情況,選擇一個Consistency和Availability之間的平衡點。
對于用戶來說,NewSQL其實就是A single logical DB,即單個邏輯數據庫。從開發的角度,NewSQL具有New Architecture(新架構)、Transparent Sharding(透明化分片中間件)、Database as a Service(云數據庫)三種形態。
二、Apache ShardingSphere的架構
Apache ShardingSphere是一套開源的分布式數據庫中間件解決方案組成的生態圈,它由JDBC、Proxy和Sidecar(規劃中)這3款相互獨立,卻又能夠混合部署配合使用的產品組成。它們均提供標準化的數據分片、分布式事務和數據庫治理功能,可適用于Java同構、異構語言、云原生等各種多樣化的應用場景。
Apache ShardingSphere定位為關系型數據庫中間件,旨在充分合理地在分布式的場景下利用關系型數據庫的計算和存儲能力,而并非實現一個全新的關系型數據庫。Apache ShardingSphere目前已提供數十個SPI作為系統的擴展點,仍在不斷增加中。
如上圖所示,這是Apache ShardingSphere最新的部署框架。Apache ShardingSphere最開始定位于NewSQL的中間件,后面它的盤子越來越大,逐漸超越了中間件的范疇,但又未達到新架構的范疇,處在一個中間的狀態。
首先,中間件的數據庫集群,可能有自己的主庫或者從庫,包括同步、復制、備份等都是靠MySQL或者PG數據庫來實現的。
其次,用戶真正能夠接觸三個產品,第一個產品叫ShardingSphere-JDBC,它定位為輕量級Java框架,在Java的JDBC層提供的額外服務。它具備解析SQL、分片管理、分布式事務,脫敏等功能。
第二個產品叫ShardingSphere-Proxy,定位為透明化的數據庫代理端,提供封裝了數據庫二進制協議的服務端版本,用于完成對異構語言的支持。適用于任何兼容MySQL/PostgreSQL協議的的客戶端,可以管理數據庫集群。
三、功能介紹
仔細觀察ShardingSphere的框架,我們不難發現中間件左側的Sharding-Scaling,它是一個提供給用戶的通用的ShardingSphere數據接入遷移,及彈性伸縮的調度平臺。
JDBC的核心功能就是Orchestration,即編排治理,配置集中化與動態化、數據治理。ShardingSphere提供了界面治理模塊——Sharding-UI,可以快速維護Sharding-Proxy集群,方便用戶一鍵式的操作。
如上圖所示,從研發的角度來看Apache ShardingSphere的框架,最上面的接入端有JDBC和Proxy,中間層的核心功能是數據分片、分布式事務、數據庫治理,最下層是數據庫集群。
其實,Sharding是Apache ShardingSphere的立足之本。除了分庫分表,它還還支持Encrypt(脫敏)和Shadow(影子庫),所有壓測的數據都會分配的影子庫中。Sharding最核心的還是底層四個模塊來做支撐。
我們必須要解析SQL,才能理解用戶需要什么。Parser(解析器)已經重構過很多遍,為了實現自主可控,保證高效性和正確性。除此之外,Router代表著路由,Rewriter改寫一些SQL,Executor做并行的控制,提高整體效率。
分布式事務主要有兩個方面,ACID強一致性事務和BASE柔性事務。值得一提的是,ShardingSphere分為自研的分布式數據庫(DTX)、對接其他公司的解決方案兩部分。對于用戶來說,他無需過多了解ShardingSphere,就可以擁有多種分布式事務的選型,這其實是一種非常有意思的方式。
ShardingSphere不只是一個分布式數據庫的原因在于,它的Orchestration模塊提供了很多功能,比如在線變更、分片規則的在線推送,以及限流和熔斷等。用戶在了解分片的基礎上,可以慢慢去探索這個開放生態,找到自己想要的功能。
潘娟強調道,分庫分表、強一致事務、柔性事務、分布式治理、可視化鏈路追蹤、讀寫分離等所有的功能都是可以組合在一起的。完全的自由組合,從而形成一個只滿足公司所需要的產品。
當存儲系統或者性能不夠的時候,數據庫就要通過Scaling(遷移平臺)進行Scale out(擴展)。目標不是放在提高單機性能上,而是要做成分布式,多個機器來解決。
四、社區
-
互聯網
+關注
關注
54文章
11184瀏覽量
103640 -
數據庫
+關注
關注
7文章
3845瀏覽量
64581
發布評論請先 登錄
相關推薦
評論