雲棲乾貨回顧 | 雲原生數據庫POLARDB專場「硬核」解析

POLARDB是阿里巴巴自主研發的雲原生關係型數據庫,目前兼容三種數據庫引擎:MySQL、PostgreSQL、Oracle。POLARDB的計算能力最高可擴展至1000核以上,存儲容量可達100TB。 
POLARDB融合了商業數據庫穩定、可靠、高性能的特徵,同時具備開源數據庫簡單、可擴展、高速迭代的優點,適合各個行業公司的創新業務使用。本專場中,來自阿里雲、江娛互動以及猿輔導的各位技術大咖一塊兒共同探討了下一代雲原生數據庫POLARDB。

一、雲原生數據庫的演進方向和客戶價值

阿里雲智能數據庫總經理曹偉爲你們介紹了雲原生數據庫的演進方向以及阿里雲POLARDB數據庫的產品能力。

嘉賓.JPG

阿里雲RDS和POLARDB都屬於OLTP的關係性數據庫,那就讓咱們先看下全球關係型數據庫的市場狀況。數據庫

現在,關係型數據庫依舊是「老大哥」,可是過去的十年中關係型數據庫領域也發生了一些微妙的變化。伴隨着開源運動的興起和MySQL、PostgreSQL等數據庫的出現,不少用戶開始在生產系統中大量使用開源數據庫,所以商業數據庫的市場受到了必定的擠壓。性能優化

a.png

開源數據庫的出現影響了整個數據庫市場的格局和版圖,也爲阿里巴巴在數據庫市場提供了一個重大的機會。通過十年的時間,阿里雲數據庫作到了「全國第一,全球領先」。固然,影響數據庫格局的重要因素除了開源以外,還有云計算的興起。服務器

在雲時代,數據庫的演化經歷了從採購License自建到雲上託管數據庫再到雲原生數據庫的轉變。過去雲是雲,數據庫是數據庫,數據庫只是部署在雲上。但在雲原生時代,數據庫和雲是合二爲一的,雲就是數據庫,數據庫就是雲。網絡

雲原生數據庫具備如下的幾個發展趨勢:

彈性:彈性不只僅是規格的彈性,而是將來CPU、容量等計算資源均可以按量付費。 
HTAP:以前TP和AP是分開處理的,TP使用關係型數據庫,而AP使用大數據存儲。將來則會融合二者,提供一個入口跑事務,一個入口跑報表和BI。 
智能:智能讓數據庫更加實用,將來數據庫的磁盤備份、內存調度等都不須要DBA來操做,而是所有由數據庫本身來完成。此外,數據庫還可以自動完成診斷和修復。 
混合雲:由於一些合規的要求,並非全部數據都能跑在雲上,所以還須要使用這種雲上雲下互聯的生態。

雲原生數據庫已經成爲了一種趨勢,智能和混合負載成爲了用戶使用數據庫必須依賴的特性。而因爲這些特性具備很是高的技術門檻,所以在將來的兩到三年內,雲原生技術落後的數據庫廠商必將會被淘汰。數據結構

對於不少企業而言,若是採用自建數據庫方案,那麼不管是對於研發仍是運維而言,都會帶來不少痛點,好比:多線程

活動上線時形成壓力突增,而數據庫卻來不及升級; 
業務發展很快,來不及進行拆庫,也來不及分庫分表; 
應用擴容以後,上百臺ECS鏈接一臺數據庫,所以在高併發下性能不好; 
使用讀寫分離,可是剛更新的數據卻查詢不到; 
主從複製常常中斷; 
一次全量數據備份須要大量時間,而且必須鎖表等。

這些都是互聯網公司在使用自建數據庫時會遇到的問題。那麼,如何解決這些問題呢?答案就是須要一個強大的雲原生數據庫。架構

所以,阿里雲提供了POLARDB數據庫。POLARDB基於業界先進的Shared-Everything架構,簡單而言,就是藉助高速的RDMA網絡將全部數據庫節點鏈接在同一網絡下。POLARDB採用計算與存儲分離的架構,數據節點是無狀態的,所以一旦發生宕機能夠隨時進行遷移。併發

b.png

對於企業級數據庫而言,通常會從可靠性、可用性、性能、彈性、成本和易用性這六個方面進行評價。負載均衡

在可靠性方面,POLARDB基於Parallel Raft協議並藉助RDMA可以作到RPO=0。此外,POLARDB基於TCP的遠程物理複製技術實現了跨AZ的容災。運維

在可用性方面,POLARDB藉助Parallel Raft複製技術使得單節點存儲切換RTO控制在10毫秒之內,基於Warm Buffer Pool技術使得讀寫節點重啓速度加快4倍以上,而且基於跨節點物理複製技術使得日誌併發應用的節點間延遲控制在100毫秒之內。

在性能方面,POLARDB使用了高速硬件和用戶態I/O協議棧,使得計算節點的寫延遲小於100us,而讀帶寬大於4GB/s。除此以外,還在I/O上進行了優化,藉助Parallel Query技術使得TPC-H性能提高超過25倍。

在成本方面,POLARDB這樣的雲原生數據庫的成本每每低於傳統的託管數據庫。這是由於企業在使用POLARDB時能夠按需擴容,彈性伸縮,而這是在實現存儲與計算分離的雲原生架構誕生以前沒法實現的。目前來看,相較於RDS,使用POLARDB將會使得成本下降約44%,這就是技術釋放的紅利。

在易用性方面,POLARDB能夠100%兼容RDS,而且能夠在阿里雲上一鍵將RDS替換爲POLARDB,此外還提供了智能讀寫分離、性能洞察以及SQL審計等優秀的功能。

此外,POLARDB在2019年也實現了技術的全面升級。首先,POLARDB MySQL 8.0兼容版於9月12日正式發佈,這是全球第一個兼容MySQL 8.0版本的雲原生數據庫。其次,POLARDB分佈式數據庫服務也正式發佈,其存儲容量支持最多超過100TB。再次,POLARDB的高性能存儲引擎X-Engine即將發佈,X-Engine存儲引擎具備高性能和高壓縮率,而且經歷了2018年雙11的實戰考驗。此外,POLARDB對於Oracle的語法兼容性特性也即將實現商業化,可以爲用戶帶來將近6倍的成本下降。此外,本次的雲棲大會上還正式發佈了POLARDB一體機,它可以更好地幫助用戶在私有云上使用POLARDB數據庫。

目前,阿里雲POLARDB數據庫已經成了增加最快的雲數據庫產品,將來也將會提供更多的特性,爲客戶帶來更多的價值。

二、POLARDB MySQL存儲引擎優化實踐

楊辛軍(Jimmy Yang) 阿里雲智能資深技術專家爲你們介紹了阿里雲POLARDB 8.0基於MySQL 8.0所作的存儲引擎優化實踐。

c.png

POLARDB實現了快速高效的物理複製,使得IO操做減小了50%,同時可以達到100T的存儲容量。與此同時,相比於本來的邏輯複製,POLARDB的物理複製更加可靠、高效,而且對於性能影響幾乎不可見。傳統的邏輯複製比物理複製延遲大不少,並且可能會出現系統堵塞,對業務形成影響,物理複製則不會產生這樣的影響。此外,POLARDB基於共享存儲還實現了非堵塞、低延遲的DDL複製,而且支持快速動態的讀擴展,最高支持擴展到16個只讀節點。

POLARDB是全球第一個具備高效物理複製的,共享存儲併兼容MySQL 8.0的雲數據庫。POLARDB不只包含了MySQL 8.0的全部重要功能,還在MySQL內核引擎的基礎之上進行了大量的優化。

雖然POLARDB使用了物理複製,可是基於客戶對於數據進行數據分析和傳輸須要Binlog的考慮,POLARDB也支持了Binlog。在性能優化方面,POLARDB最新的「Copy Page」功能減小了主節點Flush Constraint。POLARDB對於邏輯鎖系統進行了分區,減小了mutex的衝突,而且將死鎖檢測實現了並行化。POLARDB對於Transaction System也進行了優化,使用Lock Free數據結構來管理Transaction System的Lists。

相比於POLARDB 5.6版本,POLARDB 8.0版本在性能表現上有了顯著提高,在關鍵狀況下都有了數倍的改進。相比於MySQL 8.0的官方版本,POLARDB 8.0的優化改進所帶來的效果也很是明顯,尤爲是物理複製方面具備顯著的優點,在Insert狀況下POLARDB性能可達到MySQL的約6倍。

d.png

官方MySQL向8.0版本演進時過於重視高配機型的適配,而忽略了小型機的性能。而云上用戶大部分仍是用的8核、16核的小型機,所以使用MySQL8.0的性能會發生退化。所以,阿里雲POLARDB數據庫針對於這個問題進行了一系列優化。

e.png

相較於MySQL 8.0,阿里雲POLARDB 8.0版本提供了更多的內核引擎功能,好比獨立可擴展的共享Buffer Pool、行級壓縮、全球實例支持、並行DDL、分區表自建索引以及自建分區表等。

三、POLARDB MySQL並行查詢優化詳解

阿里雲智能資深技術專家封仲淹爲你們詳細介紹了POLARDB基於MySQL 8.0內核所作的並行查詢優化。

並行查詢是POLARDB 8.0版本重磅推出的一個特性,阿里雲POLARDB團隊投入了大量人力和物力來開發這個特性,而且從目前來看,客戶對於並行查詢的反饋很是好。

首先思考一個問題:爲何須要並行查詢?阿里使用MySQL的歷史已通過了十餘年,在MySQL使用中遇到的全部問題,阿里基本都遇到過。其中最使人頭痛的問題就是當MySQL表的數據量特別大時,查詢會很是的慢。大部分方案都是經過拆庫將數據量縮小。

此外,業界的一個趨勢CPU單核頻率達到了瓶頸,增加放緩。而咱們對於計算能力的訴求是永無止境的,所以CPU只能向着多核演進。而MySQL屬於傳統事務型數據庫,其沒法並行執行單條Query,所以沒法充分利用多核的做用。業界的通用作法就是並行查詢,現在幾乎全部商業數據庫都提供並行查詢的能力,將任務分攤給多個線程並行計算,大幅度縮短計算時間。

f.png

那麼,如何實現並行查詢呢?並行查詢首要關注的就是數據分區,這樣才能使得每一個Worker同時工做,互不干擾。由優化器決定分區的數量,而且讓 Worker與分區動態綁定,實現「能者多勞」,防止熱點問題的出現,使得計算更加均勻,保障了並行查詢的線性性能提高。在並行計算裏面,將單線程Plan Tree改成了多線程,劃分Worker和Leader兩個角色,儘量將全部算子下推到Worker中,利用Worker並行能力加速,而讓Leader作彙總和反饋。

h.png

那麼,並行查詢的效果如何呢?在TPCH 100G數據量的狀況下,使用POLARDB並行查詢時發現70%的查詢能夠被加速,40%的加速比超過10倍,幾乎可以將CPU能力徹底發揮出來。

1.png

與此同時,並行查詢還具備線性增加的能力,這意味着當數據量大的時候,只須要給與足夠多的CPU和內存,處理能力就可以實現線性增加。在TPCH 5G、10G、20G以及40G四種數據量維度下,不斷調整併發度,而性能曲線基本上出現線性增加趨勢。

2.png

使用並行查詢也比較簡單,用戶能夠在控制檯、Session或者SQL中進行設置本身須要的併發度。在將來,POLARDB會實現自動的DOP以及ResourceManager,並將支持Subquery、GIS和Blob以及Procedure等。

四、POLARDB 兼容Oracle能力解密與遷移

阿里雲智能資深技術專家蔡松露爲你們深度了揭祕POLARDB是如何實現兼容Oracle能力的。

以前POLARDB主要兼容MySQL、PostgreSQL等開源數據庫,而如今POLARDB也已經兼容了Oracle,這和以前兼容開源數據庫是不一樣的。之因此要兼容Oracle主要有幾個方面的緣由,首先目前公有云已經進入了深水區,所以須要更多地深刻線下的存儲和計算場景;其次在現在的政治環境中,國家層面對於「去O」有了新的要求,而目前國內市場還屬於真空。基於以上背景、機遇和挑戰,阿里雲推出了POLARDB兼容Oracle的產品。而如何實現真正的兼容,以及如何將數據從Oracle遷移到POLARDB都存在不少挑戰。

POLARDB目前100%兼容了MySQL 5.六、MySQL 8.0以及PostgreSQL 11,此外還高度兼容了Oracle,由於Oracle語法自己很是複雜,所以總體兼容度能夠達到95%左右。除了兼容Oracle以外,基於POLARDB自己的能力能夠在Proxy層實現自定義讀寫分離和自動負載均衡。Oracle在引擎層可以提供多寫能力,可是POLARDB提供的是一寫多讀能力。存儲層的Polar Store相似於Oracle的ASM。POLARDB自己的能力基本都被其兼容Oracle的產品複用了。

3.png

POLARDB Oracle版本從幾個層次作了兼容,首先是操做界面可以徹底兼容,對於DBA而言遷移成本基本爲0。其次,對於應用開發而言,目前POLARDB使用的PG開源的SDK。而對於引擎架構而言,POLARDB的架構基本和Oracle相似。目前使用的存儲也是和ASM對標的。

4.png

兼容只是起點,使用POLARDB不僅是得到了對於Oracle的兼容性,還提供了更強大的能力。不只可以得到雲原生能力,兼容更多的數據生態,而且還提供了更多的數據增值服務以及業界的解決方案,其背後是整個阿里巴巴生態的技術能力。

5.png

本次雲棲大會上發佈的POLARDB一體機使用了雲原生的管控系統,沉澱了阿里巴巴以前在公有云上積累的管控經驗。一體機使用了軟硬一體化設計,實現了整機櫃交付,而且集成了大量的成熟新硬件。主要面向政企行業,可以實現從Oracle一鍵遷移。一體機使用K8S底座,可以方便與自有系統集成。

Oracle數據庫遷移須要通過評估、測試、遷移、管理、分析診斷以及付費等諸多環節,而阿里云爲用戶在各個階段提供了很是完善的功能。

6.png

總結而言,對於Oracle的兼容性能夠分爲五個維度:

 工具和生態:兼容DBA、開發者等相關人員的使用習慣;

 SQL語法:對應用而言須要改形成本接近於零;

 性能:避免性能退化;

 成本:能夠將成本作到極低;

 部署:線上線下實現混合雲架構。

那麼,如何作遷移呢?阿里雲提供了數據庫和應用遷移(ADAM),其包含了採集、畫像、評估、改造以及遷移系統,可以幫助企業最大限度下降ORACLE數據庫和應用遷移上雲的風險、技術難度和實施週期。ADAM脫胎於阿里巴巴內部「去O」的實踐,可以幫助用戶作到一鍵上雲。

五、使用雲原生技術構建可擴展的遊戲數據庫架構

江娛互動CTO羅田惟爲你們介紹瞭如何使用雲原生技術構建可擴展的遊戲數據庫架構。

江娛互動是一家專一於小遊戲公司,頭部產品是「世界爭霸」小遊戲。 「世界爭霸」小遊戲首先算是一個大型社交系統,目前的服務數量達到了200多個,超過1百萬日活,天天5億次用戶請求。其次是大型數據庫系統,目前有200多個數據庫實例,總數據量在10TB之上。最後,遊戲仍是大型日誌系統,這對於分析玩家很重要,「世界爭霸」天天日誌量在50TB之上。

對於遊戲產業而言,面對着低延遲、重支付和全球同服的挑戰。面對海量的請求、數據和日誌,服務器數量多、架構複雜以及帶來運維壓力大,還有研發團隊能力不足、研發週期短以及要求高的挑戰,徹底由本身團隊負責是沒法搞定的。

8.png

「世界爭霸」小遊戲數據總量很大,單表數據量也大,而且QPS也很高。若是使用自建數據庫方案,使用MySQL數據庫,而且使用Cobar中間件作分庫分表。自建數據庫的方案缺點很明顯,架構比較複雜,搭建和維護的成本都很是高,而且穩定性難以保障。若是採用上雲的傳統方案就是使用阿里雲RDS來替代MySQL,這樣的缺點也是這種方案不夠靈活,這樣的方案對於傳統電商而言可可以用,可是對於遊戲而言是不足夠的,雖然搭建和維護比較方便,可是穩定性卻不夠好。

從2019年5月使用POLARDB以來,江娛互動目前已經成爲了POLARDB華北區最大客戶。POLARDB的優勢在於存儲和計算分離,擴展性強,而且單表容量大,小表性能平穩,同等規格下是RDS性能的7倍,而且相較於RDS可以節省一半成本。POLARDB穩定性也很是高,SLA接近於100%。

六、大規模實時互動課堂下的POLARDB實踐

猿輔導資深研發架構師李陽明爲你們介紹了在線教育公司猿輔導的大規模實時互動課堂下的POLARDB實踐。

猿輔導是一家在線教育公司,正在爲超過2.5億的中小學生和家長提供多元化的智能教育服務,主營業務爲在線題庫、拍照搜題、實時互動課堂、直播雲輔導等。

猿輔導對於實時互動課堂的定義包含三個要素:實時可互動、活動類型豐富以及用戶體驗穩定一致。對於在線課程測驗這個典型場景主要面對的挑戰有三條,即流量規模比較大,業務需求多樣和業務變動頻繁。首先,對於猿輔導這樣的面向K12在線教育而言,流量會有明顯的週期差別,存在明顯的波峯和波谷,中小學生每每會在工做日的晚上或者週末纔有時間上課。此外,房間規模也不一樣,猿輔導有上千個千人班級,還有若干十萬人的班級,而這兩種班級的流量是不一樣的。其次,猿輔導的業務需求比較多樣,不一樣年級的功能側重點不一樣,不一樣角色關心的內容也不一樣。

9.png

猿輔導最初使用MySQL + Redis方案,MySQL落盤核心數據並提供回放服務,Redis則實現各類榜單供直播使用。這種方案的問題是Redis數據沒法複用,致使寫多份,而且單機MySQL存在性能瓶頸沒法支持更高的QPS。後來猿輔導就引入了POLARDB數據庫,並將統計功能進行了微服務化,去掉了Redis。

10.png

這樣的方案運行了半年,也遇到了三點主要的問題:處理能力被高估、缺少隔離和缺少擴展性。因而猿輔導藉助POLARDB實現的數據庫架構的再次演進,實現了數據庫的垂直拆分、水平拆分、讀寫分離和提交異步化。

11.png

猿輔導如今的數據庫架構還存在着一些遺留的問題,好比負載均衡策略不可配、永久回放帶來數據負擔以及課堂外數據統計也是一個負擔。所以,猿輔導也進行了一些負載均衡方面的優化,好比支持按照負載進行Shard調度,也支持手工指定房間的Shard,並且使得基礎組件支持動態下發分片信息。

本文做者:Roin123

原文連接

本文爲雲棲社區原創內容,未經容許不得轉載。

相關文章
相關標籤/搜索