6倍性能差100TB容量 阿里雲POLARDB咋實現?

2021-01-11 TechWeb

POLARDB是阿里雲資料庫團隊研發的基於第三代雲計算架構下的商用關係型雲資料庫產品,實現100%向下兼容MySQL 5.6的同時,支持單庫容量擴展至上百TB以及計算引擎能力及存儲能力的秒級擴展能力,對比MySQL有6倍性能提升及相對於商業資料庫實現大幅度降低成本。

  第三代分布式共享存儲架構究竟有什麼優勢?

▲POLARDB的第三代分布式共享存儲架構

首先,受益於第三代分布式共享存儲架構,使POLARDB實現了計算節點(主要做SQL解析以及存儲引擎計算的伺服器)與存儲節點(主要做數據塊存儲,資料庫快照的伺服器)的分離,提供了即時生效的可擴展能力和運維能力。

眾所周知,在傳統資料庫上做擴容、備份和遷移等操作,花費的時間和資料庫的容量成正比,往往上TB的資料庫容量加個只讀副本就需要一到兩天時間。POLARDB的存儲容量可以實現無縫擴展,不管數據量有多大,2分鐘內即可實現只讀副本擴容,1分鐘內即可實現全量備份,為企業的快速業務發展提供了彈性擴展能力。

其次,與傳統雲資料庫一個實例一份數據拷貝不同,POLARDB同一個實例的所有節點(包括讀寫節點和只讀節點)都實現訪問存儲節點上的同一份數據,使得POLARDB的數據備份耗時實現秒級響應。(備份時間與底層數據量無關)

最後,藉助優秀的RDMA網絡以及最新的塊存儲技術,實現伺服器宕機後無需搬運數據重啟進程即可服務,滿足了網際網路環境下企業對資料庫伺服器高可用的需求。

  為什麼POLARDB能做到6倍於MySQL的性能?

這裡我們將分別以存儲性能、計算性能來進行解讀詮釋。

▲阿里雲POLARDB性能全景

 POLARDB的存儲引擎性能優化

持續釋放硬體紅利

眾所周知,關係型資料庫是IO密集型的應用,IO性能的提高對資料庫的性能提升至關重要。過去十年我們看到在資料庫領域,SSD替換HDD的過程給資料庫數據處理的吞吐能力帶來了數量級的提升。

POLARDB採用了領先的硬體技術:包括使用3DXpoint存儲介質的Optane存儲卡、NVMe SSD和RoCE RDMA網絡。同時面向新硬體架構實現軟硬一體優化:從資料庫、文件系統到網絡通訊協議、分布式存儲系統和設備驅動,POLARDB實現縱貫軟體棧各層次的整個IO鏈條的深度優化。

為了將3DXpoint顆粒的高性能和3D NAND顆粒的低成本結合起來,POLARDB創新的在軟體層實現對高速的Optane卡和大容量高吞吐的NVMe SSD進行組合,實現一個名為混合存儲層。既保證數據寫入的低延遲、高吞吐、高QoS,又使整體方案兼具較高的性價比。

 旁路內核,榨乾硬體能力

在POLARDB裡,為了追求更高的性能、更低的延遲,阿里雲資料庫團隊大膽的拋棄了Linux內核提供的各種機制,比如塊設備、各種文件系統例如ext4,以及TCP/IP協議棧和socket編程接口而選擇了另起爐灶。最終,POLARDB實現了一整套在用戶態運行的IO和網絡協議棧。

POLARDB用戶態協議棧解決了內核IO協議棧慢的問題。用戶程序在用戶態直接通過DMA操作硬體設備,通過輪詢的方式監聽硬體設備完成IO事件,消除了上下文切換和中斷的開銷。用戶程序還可以將IO處理線程和cpu進行一一映射,每個IO處理線程獨佔CPU,相互之間處理不同的IO請求,綁定不同的IO設備硬體隊列,一個IO請求生命周期從頭到尾都在一個線程一顆CPU上處理,不需要鎖進行互斥。這種技術實現最大化的和高速設備進行性能交互,實現一顆CPU達每秒約20萬次IO處理的能力,並且保持線性的擴展能力,也就意味著4顆CPU可以達到每秒80萬次IO處理的能力,在性能和經濟型上遠高於內核。

網絡也是類似的情況。過去傳統的乙太網,網卡發一個報文到另一臺機器,中間通過一跳交換機,大概需要一百到兩百微秒。POLARDB支持ROCE乙太網,應用程式通過RDMA網絡,直接將本機的內存寫入另一臺機器的內存地址,或者從另一臺機器的內存讀一塊數據到本機,中間的通訊協議編解碼、重傳機制都由RDMA網卡來完成,不需要CPU參與,使性能獲得極大提升,傳輸一個4k大小報文只需要6、7微秒的時間。如同內核的IO協議棧跟不上高速存儲設備能力,再一次的,內核的TCP/IP協議棧跟不上高速網絡設備能力,被POLARDB的用戶態網絡協議棧代替。

 硬體DMA和物理複製實現的資料庫多副本

大家都知道關係型資料庫的重要特性歸納起來是「ACID」,其中A是原子性,C是約束,I是隔離性,D是持久性。

POLARDB將從兩個維度出發,從根本上改進多副本複製。一個是保證資料庫ACID中的D(Durable),把網絡、存儲硬體提供的DMA能力串起,用硬體通道高性能的把主庫的日誌數據持久化到三個存儲節點的磁碟中;另一個是實現了高效的只讀節點,在主庫和只讀節點之間通過物理複製同步數據,直接更新到只讀節點的內存裡。 如何實現?

POLARDB實現日誌數據持久化到三個存儲節點的磁碟中。主庫通過RDMA將日誌數據發送到存儲節點的內存中,存儲節點之間再通過RDMA互相複製,每個存儲節點用SPDK將數據寫入NVMe接口的存儲介質裡,整個過程CPU不用訪問被同步的數據塊(Payload),實現數據零拷貝。

同時由RDMA網卡和NVMe控制器完成數據傳輸和持久化,CPU僅做狀態機的維護,在一致性協議的協調下,把網卡和存儲卡兩塊硬體串起來,存儲節點之間數據同步採用並發Raft(Parallel Raft)協議,和Raft協議一樣,決議在leader節點上是串行生成和提交的,但並發Raft協議可以允許主從之間亂序同步,簡單的說,允許follower節點在漏掉若干條日誌的情況先commit並apply後面過來的日誌,並異步的去補之前漏掉的日誌,數據同步的性能和穩定性都顯著優於Raft協議。

POLARDB在主庫和只讀實例之間的數據流上,放棄了基於binlog的邏輯複製,而是基於innodb的redolog實現了物理複製,從邏輯複製到物理複製對主庫和從庫性能帶來的提升都非常明顯。

在主庫上,原本引擎需要和binlog做XA事務,事務要等到binlog和redolog同時寫盤後才能返回,去掉binlog後,XA事務可以去掉,事務的執行路徑更短,IO開銷也更小。在從庫上,redolog由於是物理複製,僅需比對頁面的LSN就可以決定是否回放,天然可以多線程執行,數據的正確性也更有保證,此外,POLARDB的從庫收到redolog後只需要更新緩存裡的頁面,並不需要寫盤和IO操作,開銷遠低於傳統多副本複製裡的從庫。

  針對資料庫加速的Smart Storage

POLARDB的存儲節點針對資料庫的IO workload進行了一些針對性的優化。

IO優先級優化:POLARDB在文件系統和存儲節點兩層都開了綠色通道,對redolog文件的更新進行優待處理,減少排隊,提高IO的優先級。redolog也從512對齊調整為4k對齊,對SSD性能更加友好。

double write優化:POLARDB存儲節點原生支持1MB的原子寫,因此可以安全關閉double write,從而節省了近一倍的IO開銷。

group commit優化:POLARDB裡一次group commit可以產生寫入幾百KB的單個大IO。對於單個SSD,延遲和IO的大小是呈線性的,而POLARDB從文件系統到存儲節點都進行一系列優化來保證這種類型的IO能儘快刷下去,針對redolog文件進行條帶化,將一個上百KB的大IO切割為一批16KB的較小IO,分發到多個存儲節點和不同的磁碟上去執行,進一步的降低關鍵IO路徑的延遲。

  POLARDB的計算引擎性能優化

使用共享存儲物理複製

由於POLARDB使用共享存儲和物理複製,實例的備份恢復也做到完全依賴redolog,因此去掉了binlog。使得單個事務對io的消耗減少,有效減少語句響應時間,提升吞吐量。同時避免了引擎需要與binlog做的XA事務邏輯,事務語句的執行路徑更短。

 鎖優化

POLARDB針對高並發場景,對引擎內部鎖做了大量優化,比如把latch分解成粒度更小的鎖,或者把latch改成引用計數的方式從而避免鎖競爭,例如Undo segment mutex, log system mutex等等。PolarDB還把部分熱點的數據結構改成了Lock Free的結構,例如Server層的MDL鎖。

日誌提交優化

Redolog的順序寫性能對資料庫性能的影響很大,為了減少Redolog切換時對性能的影響,我們後臺採用類似Fallocate的方式預先分配日誌文件,此外,現代的SSD硬碟很多都是4K對齊,而MySQL代碼還是按照早期磁碟512位元組對齊的方式刷日誌的,這樣會導致磁碟做很多不必要的讀操作,不能發揮出SSD盤的性能,我們在這方面也做了優化。我們對日誌提交時Group Commit進行優化,同時採用Double RedoLog Buffer提升並行度。

  複製性能

POLARDB中物理複製的性能至關重要,我們不僅通過基於數據頁維度的並行提高了性能,還對複製中的必要流程進行了優化,例如在MTR日誌中增加了一個長度欄位,從而減少了日誌Parse階段的CPU開銷,這個簡單的優化就能減少60%的日誌Parse時間。我們還通過復用Dummy Index的內存數據結構,減少了其在Malloc/Free上的開銷,進一步提高複製性能。

 讀節點性能

POLARDB的Replica節點,日誌目前是一批一批應用的,因此當新的一批日誌被應用之前,Replica上的讀請求不需要重複創建新的ReadView,可以使用上次緩存下來的。這個優化也能提高Replica上的讀性能。

為什麼POLARDB能做到遠低於商業資料庫的成本

 存儲資源池化

POLARDB採用了一種計算和存儲分離的架構,DB運行在計算節點,計算節點組成了一個計算資源池,數據都放在存儲節點上,存儲節點組成了一個存儲資源池。如果CPU和內存不夠了,就擴充計算資源池,如果容量或者IOPS不夠了,就擴充存儲資源池,兩個池子都是按需擴容。而且存儲節點和計算節點可以分別向兩個方向優化,存儲節點會選擇低配的CPU和內存,提高存儲密度,而計算節點可以選擇小容量、低配的SSD作為作業系統和日誌盤,上多路伺服器增加CPU的核數。

而傳統的資料庫部署模型則是一種煙囪模型,一臺主機既跑資料庫又存數據,這帶來兩個問題。一個是機型難以選擇,CPU和磁碟的配比主要取決於實際業務的需求,很難提前找到最優比例。第二是磁碟碎片問題,一個生產集群裡,總有部分機器磁碟使用率是很低的,有的還不到10%,但出於業務穩定性要求,會要求獨佔主機的CPU,這些機器上的SSD其實是被浪費的。通過存儲資源池化,這兩個問題都能得到解決,SSD的利用率得到提高,成本自然也降低下來。

透明壓縮

POLARDB的存儲節點除了對ibd文件提供1MB的原子寫,消除double write的開銷,還支持對ibd文件的數據塊進行透明壓縮,壓縮率可以達到2.4倍,進一步降低了存儲成本。

而傳統資料庫在DB內進行壓縮的方案相比,存儲節點實現透明壓縮不消耗計算節點的CPU,不影響DB的性能,利用QAT卡進行加速,以及在IO路徑上用FPGA進行加速。POLARDB的存儲節點還支持快照去重(dedup)功能,資料庫的相鄰快照之間,如果頁面沒有發生修改,會連結到同一份只讀頁面上,物理上只會存儲一份。

 存儲成本的只讀實例

傳統資料庫做只讀實例,實施一寫多讀方案,是通過搭建只讀副本的方案,先拷貝一個最近的全量備份恢復一個臨時實例,再讓這個臨時實例連接主庫或者其他binlog源同步增量數據,增量追上後,把這個臨時實例加到線上升級為一個只讀副本。這種方法一個是耗時,搭建一個只讀實例需要的時間與數據量成正比;另一方面也很昂貴,需要增加一份存儲成本,比如用戶購買一個主實例加上五個只讀實例,需要付7~8份存儲的錢(7份還是8份取決於主實例是兩副本還是三副本)。

而在PolarDB架構中,這兩個問題都得到解決,一方面新增只讀實例不需要拷貝數據,不管數據量有多大都可以在2分鐘內創建出來;另一方面,主實例和只讀實例共享同一份存儲資源,通過這種架構去增加只讀副本,可以做到零新增存儲成本,用戶只需要支付只讀實例消耗的CPU和內存的費用。

POLARDB是未來雲資料庫的雛形(All in one),一個資料庫即可滿足現時多類資料庫混合使用效果。阿里雲發揮自身自研能力優勢,以POLARDB為產品契機,實現資料庫OLTP與OLAP的一體化設計,為企業的數位化升級所需的IT設施架構實現革命性進化。

相關焦點

  • 性能優於 MySQL 6 倍?阿里雲 PolarDB 的底氣在哪?
    據悉,該資料庫為阿里雲自研,採用第三代分布式共享存儲架構,與 MySQL 完全兼容,為企業級 OLTP 與 OLAP 一體化資料庫系統整體設計,可實現一個資料庫就可以達到多類資料庫混合使用的效果。PolarDB 號稱對比 MySQL 有 6 倍性能提升及相對於商業資料庫實現大幅度降低成本。
  • 阿里雲發布自研商用關係型資料庫POLARDB
    )北京】9月21日報導在企業數據容量環式增長時代,資料庫容量小、存儲空間擴展緩慢、性能不足,以及擴容升級慢等問題漸顯,傳統資料庫顯然已難以支撐諸如物聯網、新金融、新零售、新製造、電信等高吞吐場景業務的快速發展。
  • POLARDB for MySQL 版評測及同類橫向對比
    介紹POLARDB 是阿里雲自研的全新一代雲資料庫,與 MySQL 100%兼容,性能最高提升至MySQL的6倍,滿足企業級OLTP(在線事務處理)併兼顧結構化數據並發查詢場景。既融合了商業資料庫穩定可靠、高性能、可擴展的特徵,又具有開源資料庫簡潔開放的優勢,而成本只有商用資料庫的 1/10。
  • 100TB容量!SSD存儲系統創性能新記錄
    近日,德州內存系統公司(Texas Memory Systems)推出了一種新型的固態硬碟存儲系統RamSan-6200,該系統能夠提供讀寫速度500萬IOPS(每秒IO吞吐量)值,這個高性能的表現已經打破原有420萬IOPS性能記錄。
  • 阿里雲POLARDB*:創新的雲託管資料庫
    POLARDB的存儲範例與其他創新相結合,可在DBaaS模式中實現商業級資料庫的性能和可用性。阿里雲在設計POLARDB時側重於企業客戶的雲計算成本、在線事務處理(OLTP)性能、業務連續性、業務增長和安全性。所有軟硬體設計均採用高可靠性、高可用性的雲原生設計,為了實現高效協同,包含與底層英特爾®硬體的協同。該架構性能強勁,只需要傳統上內部部署的關係型資料庫的大約一成成本。
  • 性能飆升160%!阿里雲發布第七代ECS、雲原生資料庫PolarDB-X等重磅...
    6月9日,阿里雲宣布推出第七代ECS、POLARDB-X資料庫、視覺智能開放平臺等重磅新品,在性能、穩定性和開發效率上繼續領跑全球。此外,阿里雲還發布了新一代數據中臺、混合雲管理平臺、雲原生數據倉庫等產品及解決方案,目前這些產品均已在阿里雲官網上線。
  • 性能提升160%,成本下降50%:從阿里雲ECS到神龍架構的十年升華
    2019年雙11,天貓淘寶成交額2684億元;期間訂單創建峰值高達54.4萬筆每秒,是2009年第一次雙11的1360倍。為支持這一場購物狂歡節,阿里巴巴花了一年的時間將部署在線下數據中心的上萬個應用、數以十萬計的伺服器、數百萬容器遷移到公共雲平臺。阿里巴巴集團CTO、阿里雲智能總裁張建鋒稱阿里雲把「最要命」的系統全都放在雲上。
  • 阿里雲PolarDB發布更新 一鍵遷移 便宜5倍
    5月21日下午,阿里雲宣布PolarDB資料庫重大更新,傳統資料庫一鍵遷移上雲能力,可以幫助企業將線下的MySQL、PostgreSQL和Oracle等資料庫輕鬆上雲,最快1小時上雲,而且費用只有傳統資料庫的16%,有5倍差距。
  • 阿里雲計算能力實現多項突破 BigBench規模全球首次被拓展至100TB
    10月12日,阿里巴巴集團副總裁周靖人在雲棲大會上發布了阿里雲在大數據計算能力上的新突破:將BigBench數據規模擴展到100T;流計算2.0每秒峰值達千萬QPS,整體鏈路延時亞秒級;E-MapReduce對比同類產品平均性能提升3倍。周靖人說,數據是機器智能創新的基礎,擁有充沛的計算能力才能全面釋放數據的價值。
  • 高電壓=循環性能差?這次我們說不!
    文/憑欄眺【此篇為文章回顧,首發於2019年6月3日】 近年來為了滿足鋰離子電池日益增長的高能量密度的需求,正極材料也在向著兩個方向發展:1)高鎳化,更高的Ni含量能夠帶來更高的容量;2)高電壓,電壓的提高一方面能夠提升材料的容量,另一方面也能夠提升材料的電壓平臺。
  • 最新研究:構建親鈉性界面實現超高比容量、超長穩定性鈉金屬負極
    基於該界面構建的鈉金屬負極,實現了1078mAh/g (10 mAh/cm2)的高比容量,這一數值非常接近鈉金屬負極的理論比容量(1166mAh/g),且該比容量在5 mA/cm2電流密度下能穩定循環接近3000小時。在親鈉性含氧官能團的引導下,金屬鈉的沉積過電勢得到了明顯改善,在電極表面實現了均勻成核,且在隨後的生長過程中傾向於「二維生長」,沉積、剝離過程中始終未出現明顯的枝晶問題。
  • 阿里雲發布ECS企業級產品家族 19款實例族涵蓋173個應用場景
    全局優化  計算、存儲、網絡全面導入全新一代基礎核心技術對於計算行業而言,性能大幅度進步依賴於對計算全產業鏈的深度技術提升。阿里雲發布的全新一代實例則基於從硬體層系統層以及到計算架構層的升級優化。高等級的雲數據中心加上高可用的骨幹網絡,並具有領先的BGP體驗,阿里雲基礎設施歷史運行可用性達到99.999%。
  • 阿里雲第三代神龍雲伺服器怎麼做出來的?
    阿里雲第三代神龍雲伺服器怎麼做出來的?   活動現場,阿里雲發布的「神龍:新一代軟硬一體化虛擬技術架構」正式亮相。   今年7月,阿里雲宣布推出第三代神龍雲伺服器。與上一代相比,第三代神龍雲伺服器的綜合性能暴漲160%,比目前全球最頂級雲伺服器快30%以上,能提供頂級算力。
  • Nature子刊:矽與炭結合,大幅提高電極容量和倍率性能
    本文通過構建矽與炭材料之間的共價鍵,大幅提高了複合電極的容量和倍率性能。該研究為矽基電池的改進和批量生產帶來了巨大的希望。在鋰離子電池中,矽具有極高的理論容量(4200 mA h g-1),但隨之而來的問題就是嵌鋰脫鋰過程中巨大的體積變化,導致材料結構的崩塌和SEI膜的反覆形成。
  • DTCC2020|阿里雲朱潔:NoSQL最新技術發展趨勢
    以前是CPU和磁碟,最近幾年在內存方面則有幾個非常重要的趨勢,首先內存的成本下降非常快;其次單機容量大規模提升,現在基本一臺單機伺服器達到幾百GB甚至1TB成為家常便飯;最後就是非易失內存技術的快速發展。應該說這些趨勢不是一個新聞,但是今年發生一個非常大的變化,就是這些技術開始真正實際得到應用和大規模商用,我看了下阿里雲持久化存儲的內存資料庫在中國是首家雲服務廠商做到規模商用的。
  • Nature Sustainability:LiMnO2,全電循環1000次,容量保持率87.6%!
    儘管LiCoO2廣泛用作LIB的商業正極材料,但其容量有限,環境不相容,熱穩定性差以及Co的高成本限制了其應用。作為LiCoO2的類似物,LiMnO2最初被認為是一種有前景的正極材料,因其成本低,摻入的錳含量高,環境友好且理論容量大,約為286 mAh g-1。因此,具有各種晶體結構的LiMnO2,包括單斜晶,正交晶和四方尖晶石結構(圖1a),一直被作為一種綠色正極材料進行了可持續的儲能研究。
  • 阿里雲第三代神龍雲伺服器怎麼做出來的?剛剛揭秘了
    活動現場,阿里雲發布的「神龍:新一代軟硬一體化虛擬技術架構」正式亮相。今年7月,阿里雲宣布推出第三代神龍雲伺服器。與上一代相比,第三代神龍雲伺服器的綜合性能暴漲160%,比目前全球最頂級雲伺服器快30%以上,能提供頂級算力。
  • 平頭哥的首顆 AI 晶片對阿里雲來說意味著什麼
    雲廠造芯成新趨勢根據張建鋒的介紹,在業界標準的ResNet-50測試中,含光800推理性能達到78563IPS,比目前業界最好的AI晶片性能高4倍;能效比500IPS/W,是第二名的3.3倍,是「全球最高性能的AI推理晶片」。張建鋒展示「含光」晶片。
  • 單盤20TB容量蛻變 揭秘硬碟性能大提速
    再看機箱裡還有多少硬碟位,就算Z87主板的6個硬碟插口用光,連巨無霸4TB硬碟都用上,至多24TB存儲空間。不過它對硬碟的性能提升更類似於補丁的作用,革新但不是革命。    編輯點評:小打小鬧的疊瓦式磁記錄技術,無論是對硬碟容量還是性能,它似乎無關大局,更像是硬碟廠家的一項成熟的技術儲備。它的背後往往隱藏著更為尖端的科技。
  • 不同形貌與碳包覆對NiSe負極容量與SEI的影響
    1、背景鋰離子電池中應用最廣泛的石墨負極,雖價格低廉,但其低容量(340mAh/g)已不能滿足市場要求;矽負極的容量可達3590mAh/g,但其體積膨脹高達320%,易造成電極塗層粉化脫落、容量衰減、性能惡化;金屬氧化物或金屬硒化物具有相對較高的容量,同時體積膨脹也遠低於矽負極。