日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
深度解讀|阿里云新一代關系型數(shù)據(jù)庫PolarDB

本文通過描述關系型數(shù)據(jù)庫發(fā)展的背景以及云計算的時代特征,分享了數(shù)據(jù)庫計算力的螺旋式上升的進化理念,另外結合阿里云 RDS 產(chǎn)品的發(fā)展路徑,闡述了自主研發(fā)的新一代云托管關系型數(shù)據(jù)庫 PolarDB 的產(chǎn)品整體設計思想,對一些關鍵技術點進行了解讀。

10年積累的成都網(wǎng)站設計、做網(wǎng)站經(jīng)驗,可以快速應對客戶對網(wǎng)站的新想法和需求。提供各種問題對應的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡服務。我雖然不認識你,你也不認識我。但先網(wǎng)站設計后付款的網(wǎng)站建設流程,更有桃山免費網(wǎng)站建設讓你可以放心的選擇與我們合作。

關系型數(shù)據(jù)庫

談到關系型數(shù)據(jù)庫,在這個知識日新月異的 TMT 時代,聽起來有些“古董”,這個起源于半個世紀以前的 IT 技術,事實上一直處于現(xiàn)代社會科技的核心,支撐著當今世界絕大多數(shù)的商業(yè)科技文明。CPU、操作系統(tǒng)、數(shù)據(jù)庫這三大核心領域,基本上就是 IT 時代的縮影,同時也是一切信息化處理、計算力和智能化的基石。

從 1970 年 E.F.Codd 發(fā)表了一篇里程碑論文“A Relational Model of Data for Large Shared Data Banks”,到 80 年代初期支持 SQL 的商用關系型數(shù)據(jù)庫 DB2,Oracle 的面市,以及 90 年代初 SQL-Server 的誕生,都是關系型數(shù)據(jù)庫成功的代表。

時至今日,隨著全球互聯(lián)網(wǎng)的發(fā)展,大數(shù)據(jù)技術的廣泛應用,涌現(xiàn)出越來越多的新型數(shù)據(jù)庫,然而關系型數(shù)據(jù)庫仍然占據(jù)主導地位。最主要的原因之一就是關系型數(shù)據(jù)庫采用了 SQL 標準,這種高級的非過程化編程接口語言,將計算機科學和易于人類理解認知的數(shù)據(jù)管理方式完美的銜接在了一起,目前還難以超越。

SQL 語言

SQL(Structured Query Language) 語言是 1974 年由 Boyce 和 Chamberlin 提出的一種介于關系代數(shù)與關系演算之間的結構化查詢語言,其本質是用一種類似于自然語言的關鍵字和語法來定義和操作數(shù)據(jù),進行可編程的數(shù)據(jù)存儲、查詢以及管理。

這種抽象編程接口,將具體的數(shù)據(jù)問題與數(shù)據(jù)的存放、查詢實現(xiàn)的細節(jié)解耦開來,使得商業(yè)業(yè)務邏輯以及信息管理的計算模式能夠被大量復制和應用,解放了生產(chǎn)力,也極大的促進了商業(yè)化關系型數(shù)據(jù)庫自身的發(fā)展。

從 SQL 后來不斷發(fā)展和豐富來看,SQL 已經(jīng)成為關系型數(shù)據(jù)庫語言的標準和王者。到今天這種編程語言還沒有更加完美的替代品。

OLTP

1976 年,Jim Gray 發(fā)表了名為"Granularity of Locks and Degrees of Consistency in a Shared DataBase"的論文,正式定義了數(shù)據(jù)庫事務的概念和數(shù)據(jù)一致性的機制。而 OLTP 是關系型數(shù)據(jù)庫涉及事務處理的典型應用,主要是基本的、日常的事務處理,例如銀行交易。

事務處理需要遵循 ACID 四個要素來保證數(shù)據(jù)的正確性,包括原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)和持久性(Durability)。而衡量 OLTP 處理能力的性能指標主要有響應時間、吞吐率等。

開源數(shù)據(jù)庫生態(tài)

在我們簡要的回顧了關系型數(shù)據(jù)庫的歷史、地位和發(fā)展階段后,我們不難看到 Oracle、SQL-Server、DB2 等關系型數(shù)據(jù)庫仍然占據(jù)著全球商業(yè)數(shù)據(jù)庫的主導地位,雖然曾經(jīng)耳熟能詳?shù)?Informix、Sybase 已經(jīng)淡出大眾的視線。

然而,從 20 世紀 90 年代開始,另一股推崇知識分享、自由開放的軟件精神成為趨勢和潮流,尤其以 Linux、MySQL、PostgreSQL 等為代表的開源軟件,開始以強大的生命力不斷發(fā)展壯大,釋放出巨大的社會進步力量,這些被自由分享的科技紅利,孕育和促進了全球互聯(lián)網(wǎng)高科技公司的飛速發(fā)展。

這是整個人類社會的進步,我們要感謝那些開源軟件的斗士們,Richard Stallman,Linus Torvalds,Michael Widenius 等。當然,最近幾年國內涌現(xiàn)出越來越多積極參與到開源主流社區(qū)的中國公司,也在不斷地將技術分享回饋給開源世界。

根據(jù) DB-engines 網(wǎng)站的最新統(tǒng)計,不難發(fā)現(xiàn),當把開源數(shù)據(jù)庫 MySQL 和 PostgreSQL 加在一起,開源數(shù)據(jù)庫就已經(jīng)超越了商業(yè)數(shù)據(jù)庫 Oracle,成為世界上最流行的關系型數(shù)據(jù)庫。

云計算當前的階段

如果說關系型數(shù)據(jù)庫是 IT 時代的產(chǎn)物。那么在互聯(lián)網(wǎng)時代的云計算,關系型數(shù)據(jù)庫目前正處于一個什么階段呢?IT 時代從某種程度上講,更多是創(chuàng)造了計算力,那么進入互聯(lián)網(wǎng)時代的云計算,則是專注于用戶和計算力的連接,提供無處不在的計算力,這個其實是云計算商業(yè)模式的成功所在,可以稱之為 1.0 版本。而云計算 2.0 版本,需要在云環(huán)境下,重新進化和升級計算力,這種進化體現(xiàn)了社會計算力的整合以及計算資源能效的進步。

為了順應綠色計算以及共享經(jīng)濟的發(fā)展潮流,不僅僅需要云服務器,云數(shù)據(jù)庫,網(wǎng)絡互聯(lián),硬件芯片等等各個軟硬件系統(tǒng)領域的融合以及演進升級,還需要堅持科技以需求為本、服務以用戶為根的科技普惠大眾的理念來進一步促進計算效率和計算智能的提高。

我們正處在一個蓬勃發(fā)展的云計算 2.0 階段。在這個階段,關系型數(shù)據(jù)庫在云托管環(huán)境逐漸暴露出一些問題,作為在云計算時代的先行者,Amazon 于 2014 年 11 月 12 日 的 AWS re:Invent 2014 大會,發(fā)布 Aurora 云托管關系型數(shù)據(jù)庫就是為了解決這些問題。這個新一代的數(shù)據(jù)庫的發(fā)布,也昭示著云計算時代,傳統(tǒng)的 IT 技術核心產(chǎn)品將揭開自我進化的序幕。

而 2017 年 SIGMOD 數(shù)據(jù)大會, Amazon 發(fā)布了論文”Amazon Aurora: Design Considerations for High Throughput Cloud Native Relational Databases”, 更加開放的解釋了基于云環(huán)境的 Cloud-Native 設計的關系型數(shù)據(jù)庫是如何應孕而生的。

為什么阿里云研發(fā) PolarDB ?

在我們回顧了關系型數(shù)據(jù)庫以及云計算的背景之后,我們不難發(fā)現(xiàn), 云計算 1.0 雖然解決了用戶和計算的連接的問題,但是還需要進一步解決在一個共享計算的環(huán)境下,傳統(tǒng)關系型數(shù)據(jù)庫和公有云服務環(huán)境的融合問題。

云計算 1.0 用低廉的成本,靈活快速的部署、彈性和擴展能力,獲得了傳統(tǒng) IT 計算上云的轉換動力。在低成本享受普惠科技成為常態(tài)之后,隨著用戶業(yè)務的增長,用戶新的痛點開始出現(xiàn),例如,如何從根本上解決用持續(xù)低的成本,享受和傳統(tǒng) IT 計算力一樣,甚至更好的云服務,成為迫切需要。

這初看起來像偽命題,仔細分析之后,卻淋漓盡致的體現(xiàn)了螺旋式上升的哲學思想。就好像在 PC 服務器涌現(xiàn)的時代,PC 服務器首先用低廉的價格提供了和小型服務器接近的計算能力,然后在保持成本和性價比優(yōu)勢的基礎上,實現(xiàn)了超越小型服務器的性能優(yōu)勢,直至終結了小型服務器時代,開始了 PC 服務器時代。

所以說云計算時代還遠遠沒有到達鼎盛時期,除非它通過自身進化演變,在不斷保持性價比優(yōu)勢的同時,在具有快速靈活彈性的內在屬性基礎上,擁有超過傳統(tǒng) IT 計算力的能力之后,云計算才會真正進入它所主宰的時代,這只是個時間問題。

也就是說今天不只是阿里云要做這樣一款關系型數(shù)據(jù)庫,而是所有的云計算廠商都不可避免的要經(jīng)歷這樣一個階段。那就是云計算時代傳統(tǒng) IT 計算力的重建和進化!只不過 Amazon 走在了最前面,而阿里云緊跟其后,都需要經(jīng)歷這進化到蛻變的過程。

在這個過程中,新一代關系型數(shù)據(jù)庫是關鍵的里程碑之一。同理,接下來應該有更多更加高級的云服務,比如智能云操作系統(tǒng)出現(xiàn),來融合為云時代設計的硬件芯片和網(wǎng)絡互聯(lián)等等。

在 IT 時代,傳統(tǒng)的計算力(例如用關系型數(shù)據(jù)庫來處理結構化數(shù)據(jù)等)是服務于系統(tǒng)硬件隔離環(huán)境下的多用戶使用場景的。而云計算時代是多客戶 Self-Service 租用環(huán)境,各種計算負載場景更加復雜,在這種計算負載變遷的環(huán)境下,如何解決 IT 時代的技術產(chǎn)物和云計算時代應用環(huán)境的適配矛盾,正是云計算自我進化的內在推動力。

例如,在公有云環(huán)境下,隨著用戶的增多,以及用戶業(yè)務和數(shù)據(jù)的增長,備份、性能、遷移、升級、只讀實例、磁盤容量、Binlog 延遲等相關問題漸漸顯現(xiàn)出來。這背后大部分原因是由于 I/O 瓶頸(存儲和網(wǎng)絡)導致,亟須通過技術革新以及新的產(chǎn)品架構解決這個問題。另一方面,從產(chǎn)品形態(tài)來講,阿里云 RDS 目前的產(chǎn)品形態(tài)各具優(yōu)勢,在下一節(jié)會詳細介紹。

但是從產(chǎn)品架構的發(fā)展來看,除去數(shù)據(jù)庫存儲引擎的類型之外,對于關系型數(shù)據(jù)庫,考慮到工程效率以及運維成本,最好有一種通用的產(chǎn)品技術架構能兼顧不同用戶場景的需求,而不是針對每一個場景都實現(xiàn)一種對應的技術架構。

在接下來的內容,通過講述阿里云 RDS 的不同產(chǎn)品形態(tài)的特點,我們會更加清晰的了解到,PolarDB 的產(chǎn)品形態(tài)正是在吸收了之前幾種產(chǎn)品形態(tài)的優(yōu)點而孕育而生的。

PolarDB 的設計思想

用戶需求和公有云自身發(fā)展的選擇

作為云托管的關系型數(shù)據(jù),除了關系型數(shù)據(jù)庫的核心特征之外。PoalrDB 更多的關注于如何提供滿足用戶業(yè)務需求的云服務,并且通過技術革新,不斷進化,在提供更好的數(shù)據(jù)庫計算力的同時,滿足用戶以下業(yè)務需求:上云成本、OLTP 性能、業(yè)務連續(xù)性、在線業(yè)務擴展、數(shù)據(jù)安全。

另一方面云計算除了成本優(yōu)勢之外,彈性和可擴展性也是云計算的天然屬性。為了用戶業(yè)務的擴展,更好的 Scale Up 以及故障恢復,計算和存儲分離的架構成為云資源環(huán)境更好的選擇。這一點將在下一節(jié) RDS 產(chǎn)品架構的演進中得到進一步的詮釋。

阿里云 RDS 產(chǎn)品架構的演進

如上所述,阿里云 PolarDB 和 Amazon Aurora 數(shù)據(jù)庫進化的方向是一致的,然而進化的路徑各有不同。本身來講,這是由于各自的數(shù)據(jù)庫云服務實現(xiàn)方式不同所決定的。阿里云 RDS MySQL 有如下幾個版本。這些產(chǎn)品形態(tài)滿足不同的用戶業(yè)務場景,具有不同的特點,可以進行優(yōu)勢互補。

MySQL 基礎版

MySQL 基礎版采用數(shù)據(jù)庫計算節(jié)點和存儲節(jié)點分離的方式,利用云盤數(shù)據(jù)本身的可靠性和多副本的特性,同時也利用了 ECS 云服務器虛擬化來提升標準化部署、版本和運維的管理效率,能夠滿足低端用戶不太注重高可用服務的業(yè)務場景。

同時這種架構對于數(shù)據(jù)庫的遷移,數(shù)據(jù)容量的擴容,計算節(jié)點的 Scale Up,計算節(jié)點故障恢復都有天然的優(yōu)勢,根本原因就是計算和存儲的分離。后面也會講到,PolarDB 也采用了存儲和計算分離的設計理念。

MySQL 高可用版

MySQL 高可用版則是針對企業(yè)級用戶提供的高可用數(shù)據(jù)庫版本,提供 99.95% 的 SLA 保障。采用 Active-Standby 的高可用架構,主節(jié)點和備節(jié)點之間通過 MySQL Binlog 進行數(shù)據(jù)的 Replication。當主節(jié)點發(fā)生故障,備節(jié)點接管服務。

同時還支持多個只讀節(jié)點,支持負載均衡的數(shù)據(jù)讀寫分離的訪問方式。采用 Shared-Nothing 架構,計算和數(shù)據(jù)位于同一個節(jié)點,最大程度保障性能的同時又通過數(shù)據(jù)的多副本帶來可靠性。

MySQL 金融版

MySQL 金融版可以說是針對金融行業(yè)等高端用戶設計的高可用、高可靠云服務產(chǎn)品,采用分布式 Raft 協(xié)議來保證數(shù)據(jù)的強一致性,擁有更加優(yōu)異的故障恢復時間,更加滿足數(shù)據(jù)容災備份等業(yè)務場景的需求。

PolarDB 的進化

PolarDB 采用存儲與計算分離的技術架構,同時可以支持更多的只讀節(jié)點。主節(jié)點和只讀節(jié)點之間是 Active-Active 的 Failover 方式,計算節(jié)點資源得到充分利用,由于使用共享存儲,共享同一份數(shù)據(jù),進一步降低了用戶的使用成本。下一節(jié)我們將進一步從細節(jié)上描述 PolarDB 的關鍵特性。

PolarDB 的設計思想有幾個大的革新。一是通過重新設計特定的文件系統(tǒng)來存取 Redo log 這種特定的 WAL I/O 數(shù)據(jù),二是通過高速網(wǎng)絡和高效協(xié)議將數(shù)據(jù)庫文件和 Redo log 文件放在共享存儲設備上,避免了多次長路徑 I/O 的重復操作,相比較 Binlog 這種方式更加巧妙。

另外在 DB Server 設計上,采用 MySQL 完全兼容的思路,完全擁抱開源生態(tài),從 SQL 的編譯、性能優(yōu)化器和執(zhí)行計劃等等都保留了傳統(tǒng)關系型數(shù)據(jù)庫的特色。并且針對 Redolog 的 I/O 路徑,專門設計了多副本共享存儲塊設備。

我們知道,分布式數(shù)據(jù)庫一直是數(shù)據(jù)庫領域的熱點,具有非常大的實現(xiàn)難度。不管是遵循 CAP 理論,還是 BASE 思想,通用的分布式關系型數(shù)據(jù)庫基本上很難做到技術和商用的完美平衡。與 SQL 標準以及主流數(shù)據(jù)庫兼容,OLTP ACID 事務 100% 支持,99.99% 的高可用,高性能低延遲并發(fā)處理能力,彈性 Scale Up,Scale out 可擴展性,備份容災和低成本遷移等等,能夠完美兼顧所有這些特點的商用關系型數(shù)據(jù)庫還沒有出現(xiàn)。

阿里云 PolarDB 和 Amazon Aurora 的一個共同設計哲學就是,放棄了通用分布式數(shù)據(jù)庫 OLTP 多路并發(fā)寫的支持,采用一寫多讀的架構設計,簡化了分布式系統(tǒng)難以兼顧的理論模型,又能滿足絕大多數(shù) OLTP 的應用場景和性能要求。

總之,100% MySQL 的兼容性,加上專用的文件系統(tǒng)和共享存儲塊設備設計,以及在下文中提到的多項高級技術的應用,使得新一代關系型數(shù)據(jù)庫 PoalrDB 在云時代必將大放異彩。

PolarDB 產(chǎn)品關鍵技術點剖析

在講述了阿里云 RDS 的不同產(chǎn)品形態(tài)之后,我們再從整體上看一看 PolarDB 的產(chǎn)品架構。下圖勾畫了 PolarDB 產(chǎn)品的主要模塊,包括數(shù)據(jù)庫服務器,文件系統(tǒng),共享塊存儲等。

PoalrDB 產(chǎn)品架構

如圖所示,PolarDB 產(chǎn)品是一個分布式集群架構的設計。它集眾多高級的技術實現(xiàn)于一身,使得數(shù)據(jù)庫 OLTP 處理性能有了質的飛躍。PoalrDB 采用了存儲與計算分離的設計理念,滿足公有云計算環(huán)境下用戶業(yè)務彈性擴展的剛性需求。數(shù)據(jù)庫計算節(jié)點和存儲節(jié)點之間采用高速網(wǎng)絡互聯(lián),并通過 RDMA 協(xié)議進行數(shù)據(jù)傳輸,使得 I/O 性能不在成為瓶頸。

數(shù)據(jù)庫節(jié)點采用和 MySQL 完全兼容的設計。主節(jié)點和只讀節(jié)點之間采用 Active-Active 的 Failover 方式,提供 DB 的高可用服務。DB 的數(shù)據(jù)文件、redolog 等通過 User-Space 用戶態(tài)文件系統(tǒng),經(jīng)過塊設備數(shù)據(jù)管理路由,依靠高速網(wǎng)絡和 RDMA 協(xié)議傳輸?shù)竭h端的 Chunk Server。

同時 DB Server 之間僅需同步 Redo log 相關的元數(shù)據(jù)信息。Chunk Server 的數(shù)據(jù)采用多副本確保數(shù)據(jù)的可靠性,并通過 Parallel-Raft 協(xié)議保證數(shù)據(jù)的一致性。

在描述了 PolarDB 的產(chǎn)品架構之后,我們再分別從分布式架構,數(shù)據(jù)庫高可用,網(wǎng)絡協(xié)議,存儲塊設備,文件系統(tǒng)和虛擬化等方面逐一介紹下 PolarDB 使用的關鍵技術點。

Shared Disk 架構

分布式系統(tǒng)的精髓就在于分分合合,有時候為了并發(fā)性能進行數(shù)據(jù)切分,而有時候為了數(shù)據(jù)狀態(tài)的一致性而不得不合,或者由于分布式鎖而不得不同步等待。

PolarDB 采用 Shared Disk 架構,其根本原因是上述的計算與存儲分離的需要。邏輯上 DB 數(shù)據(jù)都放在所有 DB server 都能夠共享訪問的數(shù)據(jù) chunk 存儲服務器上。而在存儲服務內部,實際上數(shù)據(jù)被切塊成 chunk 來達到通過多個服務器并發(fā)訪問 I/O 的目的。

物理 Replication

我們知道,MySQL Binlog 記錄的是 Tuple 行級別的數(shù)據(jù)變更。而在 InnoDB 引擎層,需要支持事務 ACID,也維持了一份 Redo 日志,存儲的是基于文件物理頁面的修改。

這樣 MySQL 的一個事務處理默認至少需要調用兩次 fsync() 進行日志的持久化操作,這對事務處理的系統(tǒng)響應時間和吞吐性能造成了直接的影響。盡管 MySQL 采用了 Group Commit 的機制來提升高并發(fā)下的吞吐量,但并不能完全消除 I/O 瓶頸。

此外,由于單個數(shù)據(jù)庫實例的計算和網(wǎng)絡帶寬有限,一種典型的做法是通過搭建多個只讀實例分擔讀負載來實現(xiàn) Scale out。PolarDB 通過將數(shù)據(jù)庫文件以及 Redolog 等存放在共享存儲設備上,非常討巧的解決了只讀節(jié)點和主節(jié)點的數(shù)據(jù) Replication 問題。

由于數(shù)據(jù)共享,只讀節(jié)點的增加無需再進行數(shù)據(jù)的完全復制,共用一份全量數(shù)據(jù)和 Redo log,只需要同步元數(shù)據(jù)信息,支持基本的 MVCC,保證數(shù)據(jù)讀取的一致性即可。這使得系統(tǒng)在主節(jié)點發(fā)生故障進行 Failover 時候,切換到只讀節(jié)點的故障恢復時間能縮短到 30 秒以內。

系統(tǒng)的高可用能力進一步得到增強。而且,只讀節(jié)點和主節(jié)點之間的數(shù)據(jù)延遲也可以降低到毫秒級別。

從并發(fā)的角度來看,使用 Binlog 復制現(xiàn)在只能按照表級別并行復制,而物理復制只按照數(shù)據(jù)頁維度,粒度更細,并行效率更加高。

最后一點,引入 Redolog 來實現(xiàn) Replication 的好處是,Binlog 是可以關閉來減少對性能的影響,除非需要 Binlog 來用于邏輯上的容災備份或者數(shù)據(jù)遷移。

總之,在 I/O 路徑中,通常越往底層做,越容易和上層的業(yè)務邏輯和狀態(tài)解耦而降低系統(tǒng)復雜度。而且這種 WAL Redo log 大文件讀寫的 I/O 方式也非常適用于分布式文件系統(tǒng)的并發(fā)機制,為 PolarDB 帶來并發(fā)讀性能的提高。

高速網(wǎng)絡下的 RDMA 協(xié)議

RDMA 之前是在 HPC 領域被使用多年的技術手段,現(xiàn)在開始被使用到云計算領域,也證實我的一個判斷。云計算 2.0 時代,將重建人們對于云計算的認識,云端也能夠創(chuàng)造超越傳統(tǒng) IT 技術的計算力,這將是一個越來越嚴謹?shù)墓I(yè)實現(xiàn)。

RDMA 通常是需要有支持高速網(wǎng)絡連接的網(wǎng)絡設備(如交換機,NIC 等),通過特定的編程接口,來和 NIC Driver 進行通訊,然后通常以 Zero-Copy 的技術以達到數(shù)據(jù)在 NIC 和遠端應用內存之間高效率低延遲傳遞,而不用通過中斷 CPU 的方式來進行數(shù)據(jù)從內核態(tài)到應用態(tài)的拷貝,極大的降低了性能的抖動,提高了整體系統(tǒng)的處理能力。

Snapshot 物理備份

Snapshot 是一種流行的基于存儲塊設備的備份方案。其本質是采用 Copy-On-Write 的機制,通過記錄塊設備的元數(shù)據(jù)變化,對于發(fā)生寫操作的塊設備進行寫時復制,將寫操作內容改動到新復制出的塊設備上,來實現(xiàn)恢復到快照時間點的數(shù)據(jù)的目的。

Snapshot 是一個典型的基于時間以及寫負載模型的后置處理機制。也就是說創(chuàng)建 Snapshot 時,并沒有備份數(shù)據(jù),而是把備份數(shù)據(jù)的負載均分到創(chuàng)建 Snapshot 之后的實際數(shù)據(jù)寫發(fā)生的時間窗口,以此實現(xiàn)備份、恢復的快速響應。PolarDB 提供基于 Snapshot 以及 Redo log 的機制,在按時間點恢復用戶數(shù)據(jù)的功能上,比傳統(tǒng)的全量數(shù)據(jù)結合 Binlog 增量數(shù)據(jù)的恢復方式更加高效。

Parallel-Raft 算法

談到分布式數(shù)據(jù)庫的事務一致性,我們很容易想到 2PC(2 Phases Commit),3PC(3 Phases Commit)協(xié)議。而論數(shù)據(jù)狀態(tài)一致性,我們就不得不提到 Leslie Lamport 發(fā)明的 Paxos 協(xié)議,在 Paxos 為 Google 等互聯(lián)網(wǎng)廠商所廣泛應用到多個分布式系統(tǒng)實現(xiàn)之后,Paxos 成為了最受關注的數(shù)據(jù)狀態(tài)一致性算法之一。可是由于 Paxos 算法論文的理論和實現(xiàn)過于復雜,導致難以被快速應用到工程技術上。

Paxos 解決的問題之一是,在多個機器的集合中,集合中初始狀態(tài)相同的任何機器能否通過相同的命令序列到達同樣相同的狀態(tài)點,形成一個一致的收斂的狀態(tài)機。另一個問題是,作為集群中的一員,通過微觀的時間串行通訊方式,需要找到一個始終有效的協(xié)議,當一個機器的某個數(shù)據(jù)狀態(tài)需要改變時,需要和整個集群(包括其他機器)靠通訊和協(xié)議達成相同的認知,一起認同這個機器上的某個狀態(tài)的改變。

基于這兩點,基本上就解決了分布式集群架構中,不同角色的機器,達成一致性狀態(tài)機的問題。也就可以進一步設計出絕大多數(shù)分布式系統(tǒng)的框架。

Paxos 可以堪稱是 P2P(Peer to Peer)的對等設計,更加抽象和通用,也更難以理解。而 Raft 則是選舉出 Leader,再經(jīng)由 Leader 發(fā)起對其他角色進行狀態(tài)一致性更新的實現(xiàn),更容易理解。而協(xié)議本身的實現(xiàn)流程和 Paxos 有相似之處。

Parallel-Raft 是在 Raft 協(xié)議的基礎上,針對 PolarDB chunk Server 的 I/O 模型,進行改良的一致性算法。Raft 協(xié)議基于 Log 是連續(xù)的,log#n 沒有提交的話,后面的 Log 不允許提交。而 PolarDB 實現(xiàn)的 Parallel-Raft 允許并行的提交,打破了 Raft 的 log 是連續(xù)的假設,提高并發(fā)度,通過額外的限制來確保一致性。

Docker

容器虛擬化技術最早的出現(xiàn)是 Linux 內核為了解決進程在操作系統(tǒng)之間,或者在進程運行過程當中做遷移,通過進程和操作系統(tǒng)之間的解耦,來達到進程運行時的上下文和狀態(tài)能夠保存,復制和恢復的目的??墒?LXC 的實現(xiàn),卻促成了曾紅極一時的 Docker 的誕生。

從原理上講,容器虛擬化的實現(xiàn)相對于 KVM 等虛擬化技術而言,更加輕量級。如果用戶不需要感知整個操作系統(tǒng)的功能,那么用容器虛擬化技術理論上應該能夠獲得更好的計算能效比。

其實 LXC 加上 Cgroup 這種進程虛擬和資源隔離的方式已經(jīng)被使用很多年,在 HPC 領域就常被應用到 MPI 超級任務的 checkpoint 和 restart 恢復上。PolarDB 采用 Docker 環(huán)境來運行 DB 計算節(jié)點,用更輕量的虛擬化方式,解決了資源的隔離和性能的隔離,也節(jié)省了系統(tǒng)資源。

User-Space 文件系統(tǒng)

談到文件系統(tǒng),就不得不提一下 IEEE 發(fā)明的 POSIX 語義(POSIX.1 已經(jīng)被 ISO 所接受),就像說到數(shù)據(jù)庫要談到 SQL 標準。通用分布式文件系統(tǒng)實現(xiàn)的最大挑戰(zhàn)就是在完全兼容 POSIX 標準的基礎上提供強勁的并發(fā)文件讀寫性能。

可是 POSIX 的兼容勢必會犧牲一部分性能來獲得對于標準的完全支持,同時系統(tǒng)實現(xiàn)的復雜度也極大的增加。說到底是通用設計和專有設計的取舍和區(qū)別,也是易用性和性能之間的平衡,這是個經(jīng)典問題。

分布式文件系統(tǒng)是 IT 行業(yè)最經(jīng)久不衰的技術,從 HPC 時代,云計算時代,互聯(lián)網(wǎng)時代,大數(shù)據(jù)時代一直在推陳出新,其實更嚴格的說應該是針對不同應用 I/O 場景涌現(xiàn)出很多定制化的實現(xiàn),再說白點,就是不去支持 POSIX 標準。

這一點上,只能說知難而退,不過只服務于專門的 I/O 場景時,不適用 POSIX 也不是什么問題。這一點,和從 SQL 到 NoSQL 的發(fā)展如出一轍。支持 POSIX 的文件系統(tǒng),需要實現(xiàn)兼容標準的文件讀寫操作的系統(tǒng)調用接口,這樣對于用戶而言,就無需修改 POSIX 接口實現(xiàn)的文件操作應用程序。這樣一來就要求通過 Linux VFS 層來鉚接具體的文件系統(tǒng)內核實現(xiàn)。這也是導致文件系統(tǒng)工程實現(xiàn)難度加大的原因之一。

對于分布式文件系統(tǒng)而言,內核模塊還必須和用戶態(tài)的 Daemon 進行數(shù)據(jù)交換,以達到數(shù)據(jù)分片以及通過 Daemon 進程傳送到其他機器上的目的。而 User-Space 文件系統(tǒng)提供用戶使用的專用 API,不用完全兼容 POSIX 標準,也無需在操作系統(tǒng)內核進行系統(tǒng)調用的 1:1mapping 對接,直接在用戶態(tài)實現(xiàn)文件系統(tǒng)的元數(shù)據(jù)管理和數(shù)據(jù)讀寫訪問支持即可,實現(xiàn)難度大大降低,并且更加有利于分布式系統(tǒng)的進程間通訊。

小結:通過以上的介紹,我們不難發(fā)現(xiàn),PolarDB 采用了從計算虛擬化,高速網(wǎng)絡互聯(lián),存儲塊設備,分布式文件系統(tǒng),數(shù)據(jù)庫物理 Replication 等全方位的技術手段,可以說是眾多熱點技術的集大成。正式這些關鍵技術的整合創(chuàng)新,才使得 PolarDB 的性能有了質的飛躍。

【本文為專欄作者“阿里巴巴官方技術”原創(chuàng)稿件,轉載請聯(lián)系原作者】


文章題目:深度解讀|阿里云新一代關系型數(shù)據(jù)庫PolarDB
轉載來源:http://www.5511xx.com/article/djhhcgd.html