华为云大数据存储的冗余方式是三副本_华为TaurusDB技术解读(转载)
近日,華為云自研關(guān)系型數(shù)據(jù)庫 Taurus 公開亮相。作為華為云自研的最新一代云原生分布式數(shù)據(jù)庫,Taurus 完全兼容 MySQL 8.0,采用計(jì)算與存儲(chǔ)分離、日志即數(shù)據(jù)的架構(gòu)設(shè)計(jì),支持 1 寫 15 讀,性能達(dá)到原生 MySQL 的 7 倍。
性能達(dá)到原生MySQL七倍,華為云Taurus技術(shù)解讀 - InfoQ?www.infoq.cn過去多年,數(shù)據(jù)庫技術(shù)本質(zhì)上并沒有出現(xiàn)顛覆式發(fā)展。作為核心基礎(chǔ)設(shè)施,數(shù)據(jù)庫是一款用戶粘性非常高的產(chǎn)品,一旦核心業(yè)務(wù)數(shù)據(jù)落定,企業(yè)輕易不會(huì)嘗試更換,因此很長(zhǎng)一段時(shí)間內(nèi),大眾習(xí)慣于老牌 IT 廠商壟斷數(shù)據(jù)庫市場(chǎng)的狀況。然而,云廠商涉足數(shù)據(jù)庫領(lǐng)域的消息近年層出不窮,比如 AWS Aurora、阿里云 PolarDB 以及華為云 Taurus。
在互聯(lián)網(wǎng)、移動(dòng)和物聯(lián)網(wǎng)等新場(chǎng)景之下,圖片、音頻、視頻等非結(jié)構(gòu)化數(shù)據(jù)開始出現(xiàn)爆炸性增長(zhǎng),傳統(tǒng)數(shù)據(jù)庫不堪重負(fù),企業(yè)客戶急切需要新的數(shù)據(jù)庫產(chǎn)品。在云計(jì)算技術(shù)不斷成熟的背景之下,云數(shù)據(jù)庫開始崛起,并因?yàn)榘葱钄U(kuò)展、按需付費(fèi)等特性獲得大量中小企業(yè)及互聯(lián)網(wǎng)客戶的擁護(hù)。
從云廠商的入局也不難看出,現(xiàn)在做數(shù)據(jù)庫的門檻并不像從前那么高,并不只有傳統(tǒng)的數(shù)據(jù)庫廠商可以做,單就這一領(lǐng)域的創(chuàng)業(yè)者也不少。在這種情況下,核心競(jìng)爭(zhēng)力只可能從差異性發(fā)展而來,人人都在做且會(huì)做的東西很難形成核心競(jìng)爭(zhēng)力。據(jù)此,華為云近日公開亮相的自研關(guān)系型數(shù)據(jù)庫 Taurus 有什么不同?核心競(jìng)爭(zhēng)力是什么?為什么性能足以達(dá)到原生 MySQL 的 7 倍?與云上 MySQL 相比,后者的不足之處有哪些?華為云進(jìn)行了哪些修補(bǔ)?
云原生數(shù)據(jù)庫技術(shù)趨勢(shì)
傳統(tǒng)的數(shù)據(jù)庫體系結(jié)構(gòu)已有 30 多年的歷史,專為本地部署,本地存儲(chǔ)和單機(jī)數(shù)據(jù)庫實(shí)例而設(shè)計(jì)和優(yōu)化,此后很長(zhǎng)一段時(shí)間內(nèi),該體系結(jié)構(gòu)未針對(duì)公有云環(huán)境進(jìn)行優(yōu)化。在公有云環(huán)境下,計(jì)算和存儲(chǔ)通過網(wǎng)絡(luò)分離以支持多租戶數(shù)據(jù)庫實(shí)例并 scale out 向兩端擴(kuò)展;并不要求單個(gè)節(jié)點(diǎn)的高可靠性。
舉例來說,假設(shè)一個(gè)本地?cái)?shù)據(jù)庫的每個(gè)數(shù)據(jù)庫實(shí)例都有本地存儲(chǔ),為了支持高可用性,通常部署一個(gè)備實(shí)例并使用數(shù)據(jù)庫內(nèi)部復(fù)制機(jī)制將數(shù)據(jù)庫日志(MySQL binlog)發(fā)送到備實(shí)例重建數(shù)據(jù)庫副本。目前,大多數(shù)云廠商都采用類似機(jī)制來支持云數(shù)據(jù)庫高可用性。但是,這種內(nèi)部復(fù)制機(jī)制并沒有利用云存儲(chǔ)已經(jīng)通過存儲(chǔ)層復(fù)制提供的可靠性,這導(dǎo)致大量存儲(chǔ)和帶寬浪費(fèi)。實(shí)際上,備數(shù)據(jù)庫實(shí)例可以通過云存儲(chǔ)與主實(shí)例共享數(shù)據(jù),不僅可以節(jié)省磁盤空間和帶寬,還可以為云數(shù)據(jù)庫服務(wù)提供快速 RTO。
很明顯,在將傳統(tǒng)數(shù)據(jù)庫遷移上云時(shí),需要重新設(shè)計(jì)和優(yōu)化數(shù)據(jù)庫系統(tǒng)。過去幾年,主要云供應(yīng)商,比如 AWS 和阿里云,已經(jīng)做了部分工作。預(yù)計(jì)未來幾年,更多云和數(shù)據(jù)庫供應(yīng)商將遵循這一趨勢(shì),構(gòu)建某種形式的云原生數(shù)據(jù)庫技術(shù)。此外,Gartner 預(yù)測(cè),到 2019 年,90%的云數(shù)據(jù)庫架構(gòu)將支持計(jì)算和存儲(chǔ)分離。
值得注意的是,除了基于云環(huán)境的數(shù)據(jù)庫架構(gòu)重新設(shè)計(jì)之外,這一領(lǐng)域還存在兩大趨勢(shì):
- 在云原生數(shù)據(jù)庫中利用新硬件:如新硬件和 RDMA。這些都是活躍的研究領(lǐng)域,然而除了充當(dāng)緩存和計(jì)算機(jī)與存儲(chǔ)之間的快速鏈接之外,到目前為止,我們還沒有看到任何其他的突破性。
- 基于即時(shí)和歷史收集的數(shù)據(jù),使用 ML(機(jī)器學(xué)習(xí))和統(tǒng)計(jì)技術(shù)來幫助管理和自我調(diào)整云數(shù)據(jù)庫,包括但不限于數(shù)據(jù)庫實(shí)例自動(dòng)伸縮和參數(shù)設(shè)置和自動(dòng) 調(diào)整,異常檢測(cè)等。
云上 MySQL 的不足
當(dāng)前,對(duì)于 RDS for MySQL,各大云廠商基本都采用主備高可用模式、主備間使用 Binlog 復(fù)制,該架構(gòu)下每添加一個(gè)從庫都需要全棧式資源,這導(dǎo)致了一些問題:
1、資源浪費(fèi)
備庫往往不承擔(dān)流量;復(fù)制線程會(huì)消耗主庫 / 從庫計(jì)算資源,造成計(jì)算資源浪費(fèi);EVS 的 3 副本冗余機(jī)制下,N 個(gè)備庫最大需要 3*(N+1) 個(gè)副本,造成存儲(chǔ)資源浪費(fèi)以及多種數(shù)據(jù)需要走存儲(chǔ)網(wǎng)絡(luò)進(jìn)行刷盤,造成網(wǎng)絡(luò)資源浪費(fèi)等。
2、擴(kuò)展性不佳
添加只讀時(shí)需要拷貝數(shù)據(jù),重放 binlog,對(duì)于大數(shù)據(jù)量情況下速度很慢,尤其是采用本地盤方案。主從復(fù)制延遲問題會(huì)讓主備倒換受影響,難以保證 RTO。此外,采用物理備份、邏輯備份時(shí)備份恢復(fù)速度很慢, 1T 以上數(shù)據(jù)量都以小時(shí)計(jì),使得數(shù)據(jù)庫擴(kuò)展性受限。
華為云 RDS 架構(gòu)演進(jìn)
華為云 Taurus 與 Amazon Aurora 數(shù)據(jù)庫進(jìn)化的方向是一致的,然而進(jìn)化路徑各有不同,這是由各自的數(shù)據(jù)庫云服務(wù)實(shí)現(xiàn)方式不同所決定的。華為云 RDS MySQL 有如下幾個(gè)版本,這些產(chǎn)品形態(tài)滿足不同的用戶業(yè)務(wù)場(chǎng)景,具有不同的特點(diǎn),可以進(jìn)行優(yōu)勢(shì)互補(bǔ)。
MySQL 單機(jī)版
MySQL 單機(jī)版采用數(shù)據(jù)庫計(jì)算節(jié)點(diǎn)和存儲(chǔ)節(jié)點(diǎn)分離的方式,利用云盤數(shù)據(jù)本身的可靠性和多副本的特性,同時(shí)也利用 ECS 云服務(wù)器虛擬化來提升標(biāo)準(zhǔn)化部署、版本和運(yùn)維管理效率,能夠滿足低端用戶不太注重高可用服務(wù)的業(yè)務(wù)場(chǎng)景。
MySQL 主備版
MySQL 高可用版則是針對(duì)企業(yè)級(jí)用戶提供的高可用數(shù)據(jù)庫版本,提供 99.95% 的 SLA 保障。采用 Active-Standby 高可用架構(gòu),主節(jié)點(diǎn)和備節(jié)點(diǎn)之間通過 MySQL Binlog 進(jìn)行數(shù)據(jù) Replication。當(dāng)主節(jié)點(diǎn)發(fā)生故障,備節(jié)點(diǎn)接管服務(wù)。同時(shí)還支持最多 5 個(gè)只讀節(jié)點(diǎn),支持負(fù)載均衡的數(shù)據(jù)讀寫分離的訪問方式。
MySQL 金融版
MySQL 金融版是針對(duì)金融行業(yè)等高端用戶設(shè)計(jì)的高可用、高可靠云服務(wù)產(chǎn)品。一主兩備三節(jié)點(diǎn)架構(gòu),可跨 AZ 部署,任意一臺(tái)服務(wù)器宕機(jī)不影響業(yè)務(wù)可用性;基于 Paxos 協(xié)議,實(shí)現(xiàn)了分布式下數(shù)據(jù)的強(qiáng)一致性,擁有更加優(yōu)異的故障恢復(fù)時(shí)間,滿足數(shù)據(jù)容災(zāi)備份等業(yè)務(wù)場(chǎng)景的需求。
Taurus 的進(jìn)化
華為云 RDS 架構(gòu)演進(jìn)
華為云 Taurus 與 Amazon Aurora 數(shù)據(jù)庫進(jìn)化的方向是一致的,然而進(jìn)化路徑各有不同,這是由各自的數(shù)據(jù)庫云服務(wù)實(shí)現(xiàn)方式不同所決定的。華為云 RDS MySQL 有如下幾個(gè)版本,這些產(chǎn)品形態(tài)滿足不同的用戶業(yè)務(wù)場(chǎng)景,具有不同的特點(diǎn),可以進(jìn)行優(yōu)勢(shì)互補(bǔ)。
MySQL 單機(jī)版
MySQL 單機(jī)版采用數(shù)據(jù)庫計(jì)算節(jié)點(diǎn)和存儲(chǔ)節(jié)點(diǎn)分離的方式,利用云盤數(shù)據(jù)本身的可靠性和多副本的特性,同時(shí)也利用 ECS 云服務(wù)器虛擬化來提升標(biāo)準(zhǔn)化部署、版本和運(yùn)維管理效率,能夠滿足低端用戶不太注重高可用服務(wù)的業(yè)務(wù)場(chǎng)景。
MySQL 主備版
MySQL 高可用版則是針對(duì)企業(yè)級(jí)用戶提供的高可用數(shù)據(jù)庫版本,提供 99.95% 的 SLA 保障。采用 Active-Standby 高可用架構(gòu),主節(jié)點(diǎn)和備節(jié)點(diǎn)之間通過 MySQL Binlog 進(jìn)行數(shù)據(jù) Replication。當(dāng)主節(jié)點(diǎn)發(fā)生故障,備節(jié)點(diǎn)接管服務(wù)。同時(shí)還支持最多 5 個(gè)只讀節(jié)點(diǎn),支持負(fù)載均衡的數(shù)據(jù)讀寫分離的訪問方式。
MySQL 金融版
MySQL 金融版是針對(duì)金融行業(yè)等高端用戶設(shè)計(jì)的高可用、高可靠云服務(wù)產(chǎn)品。一主兩備三節(jié)點(diǎn)架構(gòu),可跨 AZ 部署,任意一臺(tái)服務(wù)器宕機(jī)不影響業(yè)務(wù)可用性;基于 Paxos 協(xié)議,實(shí)現(xiàn)了分布式下數(shù)據(jù)的強(qiáng)一致性,擁有更加優(yōu)異的故障恢復(fù)時(shí)間,滿足數(shù)據(jù)容災(zāi)備份等業(yè)務(wù)場(chǎng)景的需求。
Taurus 的進(jìn)化
Taurus 采用計(jì)算與存儲(chǔ)解耦的技術(shù)架構(gòu),同時(shí)可以最多支持 15 個(gè)只讀節(jié)點(diǎn)。主節(jié)點(diǎn)和只讀節(jié)點(diǎn)之間是 Active-Active 的 Failover 方式,計(jì)算節(jié)點(diǎn)資源得到充分利用,由于使用共享存儲(chǔ),進(jìn)一步降低了用戶使用成本。
Taurus 的設(shè)計(jì)思想有幾個(gè)大的革新:
- 將部分計(jì)算能力卸載到存儲(chǔ)節(jié)點(diǎn)
- 軟硬件深度優(yōu)化,充分利用 RDMA 網(wǎng)絡(luò)、NVME SSD 等硬件優(yōu)勢(shì)
- 日志即數(shù)據(jù),與傳統(tǒng) RDS for MySQL 相比,不再需要刷 page,所有更新操作都記錄日志,不再需要 double write,減少了網(wǎng)絡(luò)通信。
另外在 DB Server 設(shè)計(jì)上,完全擁抱開源生態(tài),完全兼容 MySQL 8.0。
華為云 Taurus 和 Amazon Aurora 的一個(gè)共同設(shè)計(jì)哲學(xué)就是,先推出一寫多讀的版本,根據(jù)市場(chǎng)需求,適時(shí)推出多寫版本,滿足絕大多數(shù) OLTP 應(yīng)用場(chǎng)景和性能要求。
Taurus 架構(gòu)設(shè)計(jì)原則:
- 采用華為下一代云存儲(chǔ)(DFV)作為快速,可擴(kuò)展,可靠和共享數(shù)據(jù)庫存儲(chǔ)。不復(fù)制存儲(chǔ)層中的已有功能,例如,數(shù)據(jù)復(fù)制,跨 AZ 可靠性,數(shù)據(jù)清理。
- 單個(gè)數(shù)據(jù)庫集群應(yīng)該只需要一份足夠可靠的數(shù)據(jù)庫副本集。所有只讀副本共享存儲(chǔ)在云存儲(chǔ)中,甚至跨 AZ,數(shù)據(jù)庫層中沒有邏輯復(fù)制。一寫多讀,沒有獨(dú)立的備用實(shí)例。主節(jié)點(diǎn)發(fā)生故障轉(zhuǎn)移時(shí),只讀副本可以切換到接管主服務(wù)器。
- 記錄為數(shù)據(jù)庫。僅順序?qū)懭胍宰钚』?SSD 磨損(避免寫入放大)
- 只有數(shù)據(jù)庫日志通過網(wǎng)絡(luò)從數(shù)據(jù)庫計(jì)算機(jī)節(jié)點(diǎn)寫入 DFV 存儲(chǔ)層。沒有頁面檢查點(diǎn)和刷新跨網(wǎng)絡(luò),沒有雙重寫入?;?DFV 存儲(chǔ)層內(nèi)的數(shù)據(jù)庫日志重建數(shù)據(jù)面,以避免繁重的網(wǎng)絡(luò)流量。
- 基于跨 DFV 存儲(chǔ)節(jié)點(diǎn)的切片策略對(duì)數(shù)據(jù)庫進(jìn)行分區(qū),以支持大型數(shù)據(jù)庫卷。單個(gè) DFV 存儲(chǔ)節(jié)點(diǎn)管理來自不同數(shù)據(jù)庫集群實(shí)例的多個(gè)分片,實(shí)現(xiàn)存儲(chǔ)容量和處理能力的無限擴(kuò)展。
Taurus 數(shù)據(jù)庫關(guān)鍵技術(shù)點(diǎn)剖析
Taurus 架構(gòu)
如圖所示,Taurus 是一個(gè)分布式集群架構(gòu)設(shè)計(jì),采用計(jì)算與存儲(chǔ)分離的設(shè)計(jì)理念,滿足公有云計(jì)算環(huán)境下用戶業(yè)務(wù)彈性擴(kuò)展的剛性需求。數(shù)據(jù)庫計(jì)算節(jié)點(diǎn)和存儲(chǔ)節(jié)點(diǎn)之間采用高速網(wǎng)絡(luò)互聯(lián),并通過 RDMA 協(xié)議進(jìn)行數(shù)據(jù)傳輸,使得 I/O 性能不再成為瓶頸。
數(shù)據(jù)庫節(jié)點(diǎn)采用和 MySQL 完全兼容的設(shè)計(jì)。主節(jié)點(diǎn)和只讀節(jié)點(diǎn)之間采用 Active-Active 的 Failover 方式,提供 DB 的高可用服務(wù)。同時(shí) ,DB Server 之間僅需同步 Redo log 相關(guān)的元數(shù)據(jù)信息。
- Query result cache
- Query plan cache
- Online DDL
SQL Replication
只讀節(jié)點(diǎn)在本地 buffer pool 中維護(hù)數(shù)據(jù)頁的多個(gè)版本
- 減少從存儲(chǔ)的遠(yuǎn)端讀取數(shù)據(jù)頁
主庫交互
- MVCC: 同步主庫當(dāng)前活躍事務(wù)列表
- 頁失效: 接收主庫頁失效列表
高速網(wǎng)絡(luò)下的 RDMA 協(xié)議
部署 RoCE RDMA 以減少網(wǎng)絡(luò)延遲并增加帶寬。在單個(gè) AZ 中,Taurus 可以利用高速網(wǎng)絡(luò)(RDMA)來獲得更新和讀取的低延遲存儲(chǔ) I/O,這對(duì)于低客戶端連接方案非常有用。
存儲(chǔ)抽象層 (SAL)
存儲(chǔ)抽象層 (SAL) 是邏輯層,將數(shù)據(jù)存儲(chǔ)和 SQL 前端、事務(wù)、查詢執(zhí)行等進(jìn)行隔離。由一組容量和處理能力按需擴(kuò)展的分片節(jié)點(diǎn)組成,SAL 將所有 SQL 節(jié)點(diǎn)需要的數(shù)據(jù)頁按分片管理和橫向擴(kuò)展。隨著數(shù)據(jù)庫規(guī)模的增長(zhǎng),可用資源(存儲(chǔ)、內(nèi)存)隨著分片創(chuàng)建按比例增長(zhǎng)。數(shù)據(jù)處理本地化,數(shù)據(jù)密集型操作是在存儲(chǔ)節(jié)點(diǎn)上按分片服務(wù)執(zhí)行。
Taurus Storage
Taurus 存儲(chǔ)基于華為云存儲(chǔ) DFV 持久層。DFV 持久層集群包括多個(gè)存儲(chǔ)節(jié)點(diǎn)。每個(gè)存儲(chǔ)節(jié)點(diǎn)包含多個(gè) SSD 設(shè)備和適應(yīng) SSD 介質(zhì)的 append 存儲(chǔ)服務(wù)進(jìn)程。 DFV 持久層為 SQL 節(jié)點(diǎn)提供存儲(chǔ)接口。
Taurus 采用日志化方式處理 SQL 節(jié)點(diǎn)數(shù)據(jù),即通常表述的“日志即數(shù)據(jù)”。數(shù)據(jù)組織采用面向 SSD 重新設(shè)計(jì)的 Append 模式,顯著減少系統(tǒng)寫放大,減少存儲(chǔ)時(shí)延。同時(shí),在 Append 模式下,數(shù)據(jù)回滾和回檔變得非??焖?。
Taurus 核心競(jìng)爭(zhēng)力
成本更低
與傳統(tǒng) RDS for MySQL 相比,只有一份存儲(chǔ)。添加只讀節(jié)點(diǎn)時(shí),只需添加計(jì)算節(jié)點(diǎn),無需額外購買存儲(chǔ)。只讀節(jié)點(diǎn)越多,節(jié)省的存儲(chǔ)成本越多。
擴(kuò)展性、可靠性更高
- 橫向擴(kuò)展更快。Taurus 采用共享存儲(chǔ),只需添加計(jì)算節(jié)點(diǎn),無論多大數(shù)據(jù)量,只需 5 分鐘左右,并且支持 15 個(gè)只讀.
- 縱向擴(kuò)展更快。容器化部署,規(guī)格變更更快。
- 主從倒換時(shí)間更快。 消除了復(fù)制延遲,RTO 有保證。
- 數(shù)據(jù)庫 Crash 恢復(fù)更快。
性能更強(qiáng)
軟硬結(jié)合,基于硬件:Hi1822 卸載,NVMe SSD,RDMA,同時(shí)內(nèi)核進(jìn)行優(yōu)化:去掉 double write,Query Cache/Plan Cache 優(yōu)化,Innodb Lock Management 優(yōu)化,Audit Plugin 效率優(yōu)化,性能達(dá)到原生 MySQL 的 7 倍。
備份恢復(fù)更快
專為 Taurus 引擎定制的分布式存儲(chǔ)系統(tǒng),極大提升數(shù)據(jù)備份、恢復(fù)性能
- 強(qiáng)大的數(shù)據(jù)快照處理能力。AppendOnly vs. WriteInPlace,數(shù)據(jù)天然按多時(shí)間點(diǎn)多副本存儲(chǔ),快照秒級(jí)生成,支持海量快照。
- 任意時(shí)間點(diǎn)快速回滾?;诘讓哟鎯?chǔ)系統(tǒng)的多時(shí)間點(diǎn)特性,不需增量日志回放,可直接實(shí)現(xiàn)按時(shí)間點(diǎn)回滾。
- 并行高速備份、恢復(fù)。備份及恢復(fù)邏輯下沉到各存儲(chǔ)節(jié)點(diǎn),本地訪問數(shù)據(jù)并直接與第三方存儲(chǔ)系統(tǒng)交互,高并發(fā)高性能。
- 快速實(shí)例恢復(fù)。通過異步數(shù)據(jù)拷貝 + 按需實(shí)時(shí)數(shù)據(jù)加載機(jī)制, Taurus 實(shí)例可在數(shù)分鐘內(nèi)達(dá)到完整功能可用。
總結(jié)
通過以上介紹不難發(fā)現(xiàn),Taurus 的共享存儲(chǔ)架構(gòu)將數(shù)據(jù)持久化放入新一代存儲(chǔ)中,充分保障數(shù)據(jù)強(qiáng)一致性和 0 丟失;采用軟硬件結(jié)合,充分利用 RDMA 網(wǎng)絡(luò)、NVME SSD 等硬件優(yōu)勢(shì),正是這些關(guān)鍵技術(shù)的整合創(chuàng)新,才使得 Taurus 的性能有了質(zhì)的飛躍。
總結(jié)
以上是生活随笔為你收集整理的华为云大数据存储的冗余方式是三副本_华为TaurusDB技术解读(转载)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 五险一个月要交多少钱 可以根据这个比例
- 下一篇: 惠普800g1支持什么内存_惠普黑白激光