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

2021-01-10 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設施架構實現革命性進化。

相關焦點

  • 銀泰百貨資料庫搬遷至阿里雲PolarDB 投產比增長2倍以上
    銀泰百貨資料庫搬遷至阿里雲PolarDB 投產比增長2倍以上來源:聯商網2020-05-15 15:04銀泰資料庫負責人李亞博透露,公司核心業務系統中的資料庫搬遷至阿里雲PolarDB之後,在相同成本的情況下可以支撐三倍以上的業務量,即投入產出比增長2倍以上。新零售四年,銀泰百貨通過數位化轉型,成為一家全面架構在雲上的網際網路百貨公司。在此過程中,銀泰百貨資料庫上雲對業務飛躍式發展進行了很好地支撐。
  • 從架構深度解析阿里雲自研資料庫POLARDB
    ▲蔡松露 阿里云云資料庫資深技術專家、架構師  阿里云云資料庫架構師,主要負責阿里雲POLARDB、NoSQL技術以及阿里雲資料庫整體架構等工作。是一個雲原生資料庫,前一段時間,我們在巴黎的ICDE 2018大會上,對雲原生這個標準做了一些闡述,今天將從架構和產品設計方面,給大家講一下POLARDB的具體實現。
  • 把雲資料庫帶回家 阿里雲發布POLARDB BOX 高性能一體機
    【IT168 資訊】9月26日,2019杭州雲棲大會上,阿里雲宣布正式推出高性能資料庫一體機——POLARDB BOX,用戶部署在自有數據中心即可享受雲資料庫的便捷體驗,同時還為Oracle等傳統資料庫用戶提供一鍵遷移功能,最多節省95%遷移成本,更適合政企、交通、航運、金融等行業。
  • 阿里雲POLARDB*:創新的雲託管資料庫
    POLARDB的存儲範例與其他創新相結合,可在DBaaS模式中實現商業級資料庫的性能和可用性。阿里雲在設計POLARDB時側重於企業客戶的雲計算成本、在線事務處理(OLTP)性能、業務連續性、業務增長和安全性。所有軟硬體設計均採用高可靠性、高可用性的雲原生設計,為了實現高效協同,包含與底層英特爾®硬體的協同。該架構性能強勁,只需要傳統上內部部署的關係型資料庫的大約一成成本。
  • 阿里雲POLARDB獲選2019中國資料庫年度最佳創新產品
    [PConline 資訊]近日在DTCC 2019(第十屆中國資料庫技術大會)上,阿里雲自研雲原生資料庫POLARDB獲選「年度最佳創新產品」。POLARDB是阿里雲在2018年正式商業化的雲原生資料庫,採用存儲計算分離、軟硬一體化設計。
  • 阿里雲網盤免費容量怎麼獲得 免費容量空間獲取方法
    阿里雲網盤app在近日正式推出,這款app將面對C端的消費者用戶,與百度網盤等大多數網盤一樣,阿里雲網盤也是有一定的免費容量空間可以獲得,這裡我們來看下如何免費獲得容量空間。
  • 阿里雲發布小程序繁星計劃 同推POLARDB 2.0等數十款新品
    導讀:在2019阿里雲峰會上,阿里巴巴旗下的阿里雲、支付寶、淘寶、釘釘、高德等聯合發布了「阿里巴巴小程序繁星計劃」,以20億元的補貼扶持200萬+小程序開發者和100萬+商家。  3月21日消息 2019阿里雲峰會今日在北京正式舉行,阿里巴巴旗下的阿里雲、支付寶、淘寶、釘釘、高德等聯合發布了「阿里巴巴小程序繁星計劃」。
  • 阿里雲104核卡片雲電腦無影,性能強大但距離普通用戶還需5年
    最近阿里雲剛剛發布的卡片雲電腦「無影」,讓大家不僅感嘆今後的電腦將會越來越小,而性能反而會越來越強。因為阿里雲發布的無影雲電腦,只有一張名片大小,重量也僅僅只有60克。可以說從發布的參數上來看,阿里雲剛剛發布的無影,精緻小巧且性能強大,依託阿里雲背後強大的算力,可以解決很多問題。當然無影雖然厲害,並且是面向普通用戶的個人云計算產品,但其實這樣的產品,距離普通用戶至少還有5年的路要走。阿里做雲計算起步算是非常早的,目前也已經是亞洲最大的雲計算服務商。
  • 實現石墨負極80%容量僅需充電十分鐘
    電動汽車的成功實現很大程度上依賴於鋰離子電池的性能,其特徵包括能量密度、安全性、循環壽命、成本和充電時間。尤其是,充電時間被認為是影響用戶使用電動汽車意願的關鍵因素。鋰離子電池的充電性能,不僅取決於充電協議和電池結構,還取決於所使用材料的選擇,特別是負極材料的選擇。
  • 阿里含光800 AI處理器高調亮相後,三大場景落地性能比GPU高4-11倍
    去年張建鋒發布含光800時說,「在業界標準的ResNet-50測試中,含光800推理性能達到78563 IPS,比目前業界最好的AI晶片性能高4倍;能效比500 IPS/W,是第二名的3.3倍。」不過龍欣在昨天的分享中並沒有提及含光800的峰值性能,而是強調其可用性。
  • 阿里雲網盤和百度網盤有什麼不同 免費容量及下載速度介紹
    阿里雲網盤和百度網盤有什麼不同 免費容量及下載速度介紹 阿里雲網盤是阿里雲團隊推出的一款網盤服務,這個網盤服務和百度網盤有哪些不同之處
  • 阿里雲PolarDB發布更新:雲上成本為傳統資料庫1/6
    網易科技訊 5月21日消息,阿里雲PolarDB發布重大更新,提供傳統資料庫一鍵遷移上雲能力,可以幫助企業將線下的MySQL、PostgreSQL和Oracle等資料庫輕鬆上雲,最快數小時內遷移完成。據估算,雲上成本不到傳統資料庫的1/6。阿里雲稱,目前,已有約40萬個資料庫遷移到阿里雲上。企業在使用傳統商業資料庫時,經常會面臨授權費用貴、硬體成本高、架構與運維複雜、遷移難度大等問題,此次雲原生資料庫PolarDB的重大更新針對此類痛點,實現一鍵快速遷移,並提供雲上的完整生態服務。
  • 阿里雲推出4G Cat 1模組,加速實現萬物互聯!
    傳統的2G/3G網絡的物聯網終端依然存在傳輸效率低、網絡穩定性差、使用不方便、成本高昂等問題。 在此背景下,2020年6月4日,阿里雲攜手深圳市廣和通無線股份有限公司推出了內嵌AliOS Things輕應用開發框架的LTE Cat 1模組L610
  • 百度網盤:是時候向115網盤和阿里雲學習了
    主要從阿里雲網盤宣傳標語的4個方面去分析,分別涉及下載速度、容量大小、會員價格、網盤安全、不打擾用戶,以下就以阿里雲網盤、115網盤及百度網盤作比較。 下載速度 阿里雲網盤上傳下載均不限速,最重要的是付不付費都不限速,付費估計速度更快,其宣傳標語「是生產力工具不能讓人等待太久」。
  • 阿里雲Cloud Toolkit VSCode新版本發布:實現一鍵打包部署,開發...
    首頁 > 見聞 > 關鍵詞 > 阿里雲最新資訊 > 正文 阿里雲Cloud Toolkit VSCode新版本發布:實現一鍵打包部署,開發提速 8 倍
  • 12306買票全靠它,為什麼是阿里雲登上國家最高科技獎的頒獎臺?
    一度草莽的阿里雲,種火十年,終有收穫。1月10月,「學霸」阿里雲又獲兩項大獎——國家技術發明獎、國家科技進步獎兩項國家大獎,這是網際網路公司首次同時榮獲兩大國家科技獎,也實現了網際網路公司在國家技術發明獎上零的突破。
  • ZStack+阿里雲神龍伺服器,畫一條新基建上雲的彩虹?
    但虛擬化也付出了性能的成本,性能損失不可避免,部分應用的虛擬化表現也並不理想,某些特殊硬體在虛擬化環境中無法使用。真正的裸金屬技術,應該讓物理伺服器在雲平臺中有跟虛擬化一樣的體驗。3.彈性裸金屬有什麼必然性?傳統裸金屬有著部署慢、銷毀慢、無法使用雲存儲、網絡差、作業系統支持難等缺點。彈性裸金屬則可以兼顧靈活與資源利用。
  • 百度網盤迎來勁敵,阿里推出「阿里雲網盤」App
    Tech星球(微信ID:tech618)體驗阿里雲網盤App後發現,阿里雲網盤App在主要功能上結合了百度網盤和一刻相冊,主打文件備份存儲和智能相冊。在實際使用的過程中,阿里雲網盤與其他網盤產品並沒有過多的差異。
  • 阿里雲PolarDB發布更新 支持Oracle等資料庫一鍵遷移上雲
    目前,企業在使用傳統商業資料庫時,經常會面臨授權費用貴、硬體成本高、架構與運維複雜、遷移難度大等問題,此次雲原生資料庫PolarDB的重大更新針對此類痛點,實現一鍵快速遷移,並提供雲上的完整生態服務。此外,產品還具備三大亮點,滿足企業在數字時代海量的數據存儲需求:1、單實例規格最大達88核710GB;2、業內最快單節點讀寫速度100萬QPS;3、實現三份數據存儲實時同步0延遲。除性能領先外,雲上資料庫成本也低於傳統資料庫,不到後者的1/6。
  • 富士膠片成功研發鍶鐵氧體磁帶 實現全球最大580TB存儲容量
    這代表富士膠片研發出了劃時代的技術,可以生產出全球最大容量*4、高達580TB的數據流磁帶,為現有磁帶容量的約50倍*5。580TB的容量足以存儲相當於12萬張DVD的數據。SrFe是一種磁性材料,具有極高磁性,即使加工成精細顆粒,仍能穩定地保持高性能,作為原材料被廣泛用於生產電機用磁鐵。