云原生数据库POLARDB专场“硬核”解析
POLARDB是阿里巴巴自主研發(fā)的云原生關系型數據庫,目前兼容三種數據庫引擎:MySQL、PostgreSQL、Oracle。POLARDB的計算能力最高可擴展至1000核以上,存儲容量可達100TB。?
POLARDB融合了商業(yè)數據庫穩(wěn)定、可靠、高性能的特征,同時具有開源數據庫簡單、可擴展、高速迭代的優(yōu)勢,適合各個行業(yè)公司的創(chuàng)新業(yè)務使用。本專場中,來自阿里云、江娛互動以及猿輔導的各位技術大咖一起共同探討了下一代云原生數據庫POLARDB。
1、云原生數據庫的演進方向和客戶價值
阿里云智能數據庫總經理曹偉為大家介紹了云原生數據庫的演進方向以及阿里云POLARDB數據庫的產品能力。
阿里云RDS和POLARDB都屬于OLTP的關系性數據庫,那就讓我們先看下全球關系型數據庫的市場情況。
如今,關系型數據庫依舊是“老大哥”,但是過去的十年中關系型數據庫領域也發(fā)生了一些微妙的變化。伴隨著開源運動的興起和MySQL、PostgreSQL等數據庫的出現,很多用戶開始在生產系統中大量使用開源數據庫,因此商業(yè)數據庫的市場受到了一定的擠壓。
開源數據庫的出現影響了整個數據庫市場的格局和版圖,也為阿里巴巴在數據庫市場提供了一個重大的機會。經過十年的時間,阿里云數據庫做到了“全國第一,全球領先”。當然,影響數據庫格局的重要因素除了開源之外,還有云計算的興起。
在云時代,數據庫的演化經歷了從采購License自建到云上托管數據庫再到云原生數據庫的轉變。過去云是云,數據庫是數據庫,數據庫只是部署在云上。但在云原生時代,數據庫和云是合二為一的,云就是數據庫,數據庫就是云。
云原生數據庫具有以下的幾個發(fā)展趨勢:
彈性:彈性不僅僅是規(guī)格的彈性,而是未來CPU、容量等計算資源都可以按量付費。?
HTAP:之前TP和AP是分開處理的,TP使用關系型數據庫,而AP使用大數據存儲。未來則會融合兩者,提供一個入口跑事務,一個入口跑報表和BI。?
智能:智能讓數據庫更加實用,未來數據庫的磁盤備份、內存調度等都不需要DBA來操作,而是全部由數據庫自己來完成。此外,數據庫還能夠自動完成診斷和修復。?
混合云:因為一些合規(guī)的要求,并不是所有數據都能跑在云上,因此還需要使用這種云上云下互聯的生態(tài)。
云原生數據庫已經成為了一種趨勢,智能和混合負載成為了用戶使用數據庫必須依賴的特性。而由于這些特性具有非常高的技術門檻,因此在未來的兩到三年內,云原生技術落后的數據庫廠商必將會被淘汰。
對于很多企業(yè)而言,如果采用自建數據庫方案,那么無論是對于研發(fā)還是運維而言,都會帶來很多痛點,比如:
活動上線時造成壓力突增,而數據庫卻來不及升級;?
業(yè)務發(fā)展很快,來不及進行拆庫,也來不及分庫分表;?
應用擴容之后,上百臺ECS連接一臺數據庫,因此在高并發(fā)下性能很差;?
使用讀寫分離,但是剛更新的數據卻查詢不到;?
主從復制經常中斷;?
一次全量數據備份需要大量時間,并且必須鎖表等。
這些都是互聯網公司在使用自建數據庫時會遇到的問題。那么,如何解決這些問題呢?答案就是需要一個強大的云原生數據庫。
因此,阿里云提供了POLARDB數據庫。POLARDB基于業(yè)界先進的Shared-Everything架構,簡單而言,就是借助高速的RDMA網絡將所有數據庫節(jié)點連接在同一網絡下。POLARDB采用計算與存儲分離的架構,數據節(jié)點是無狀態(tài)的,因此一旦發(fā)生宕機可以隨時進行遷移。
對于企業(yè)級數據庫而言,一般會從可靠性、可用性、性能、彈性、成本和易用性這六個方面進行評價。
在可靠性方面,POLARDB基于Parallel Raft協議并借助RDMA能夠做到RPO=0。此外,POLARDB基于TCP的遠程物理復制技術實現了跨AZ的容災。
在可用性方面,POLARDB借助Parallel Raft復制技術使得單節(jié)點存儲切換RTO控制在10毫秒以內,基于Warm Buffer Pool技術使得讀寫節(jié)點重啟速度加快4倍以上,并且基于跨節(jié)點物理復制技術使得日志并發(fā)應用的節(jié)點間延遲控制在100毫秒以內。
在性能方面,POLARDB使用了高速硬件和用戶態(tài)I/O協議棧,使得計算節(jié)點的寫延遲小于100us,而讀帶寬大于4GB/s。除此之外,還在I/O上進行了優(yōu)化,借助Parallel Query技術使得TPC-H性能提升超過25倍。
在成本方面,POLARDB這樣的云原生數據庫的成本往往低于傳統的托管數據庫。這是因為企業(yè)在使用POLARDB時可以按需擴容,彈性伸縮,而這是在實現存儲與計算分離的云原生架構誕生之前無法實現的。目前來看,相較于RDS,使用POLARDB將會使得成本降低約44%,這就是技術釋放的紅利。
在易用性方面,POLARDB可以100%兼容RDS,并且可以在阿里云上一鍵將RDS替換為POLARDB,此外還提供了智能讀寫分離、性能洞察以及SQL審計等優(yōu)秀的功能。
此外,POLARDB在2019年也實現了技術的全面升級。首先,POLARDB MySQL 8.0兼容版于9月12日正式發(fā)布,這是全球第一個兼容MySQL 8.0版本的云原生數據庫。其次,POLARDB分布式數據庫服務也正式發(fā)布,其存儲容量支持最多超過100TB。再次,POLARDB的高性能存儲引擎X-Engine即將發(fā)布,X-Engine存儲引擎具有高性能和高壓縮率,并且經歷了2018年雙11的實戰(zhàn)考驗。此外,POLARDB對于Oracle的語法兼容性特性也即將實現商業(yè)化,能夠為用戶帶來將近6倍的成本降低。此外,本次的云棲大會上還正式發(fā)布了POLARDB一體機,它能夠更好地幫助用戶在私有云上使用POLARDB數據庫。
目前,阿里云POLARDB數據庫已經成了增長最快的云數據庫產品,未來也將會提供更多的特性,為客戶帶來更多的價值。
2、POLARDB MySQL存儲引擎優(yōu)化實踐
楊辛軍(Jimmy Yang) 阿里云智能資深技術專家為大家介紹了阿里云POLARDB 8.0基于MySQL 8.0所做的存儲引擎優(yōu)化實踐。
POLARDB實現了快速高效的物理復制,使得IO操作減少了50%,同時能夠達到100T的存儲容量。與此同時,相比于原本的邏輯復制,POLARDB的物理復制更加可靠、高效,并且對于性能影響幾乎不可見。傳統的邏輯復制比物理復制延遲大很多,而且可能會出現系統堵塞,對業(yè)務造成影響,物理復制則不會產生這樣的影響。此外,POLARDB基于共享存儲還實現了非堵塞、低延遲的DDL復制,并且支持快速動態(tài)的讀擴展,最高支持擴展到16個只讀節(jié)點。
POLARDB是全球第一個具有高效物理復制的,共享存儲并兼容MySQL 8.0的云數據庫。POLARDB不僅包含了MySQL 8.0的所有重要功能,還在MySQL內核引擎的基礎之上進行了大量的優(yōu)化。
雖然POLARDB使用了物理復制,但是基于客戶對于數據進行數據分析和傳輸需要Binlog的考慮,POLARDB也支持了Binlog。在性能優(yōu)化方面,POLARDB最新的“Copy Page”功能減少了主節(jié)點Flush Constraint。POLARDB對于邏輯鎖系統進行了分區(qū),減少了mutex的沖突,并且將死鎖檢測實現了并行化。POLARDB對于Transaction System也進行了優(yōu)化,使用Lock Free數據結構來管理Transaction System的Lists。
相比于POLARDB 5.6版本,POLARDB 8.0版本在性能表現上有了顯著提升,在關鍵情況下都有了數倍的改進。相比于MySQL 8.0的官方版本,POLARDB 8.0的優(yōu)化改進所帶來的效果也非常明顯,尤其是物理復制方面具有顯著的優(yōu)勢,在Insert情況下POLARDB性能可達到MySQL的約6倍。
官方MySQL向8.0版本演進時過于重視高配機型的適配,而忽略了小型機的性能。而云上用戶大部分還是用的8核、16核的小型機,因此使用MySQL8.0的性能會發(fā)生退化。因此,阿里云POLARDB數據庫針對于這個問題進行了一系列優(yōu)化。
相較于MySQL 8.0,阿里云POLARDB 8.0版本提供了更多的內核引擎功能,比如獨立可擴展的共享Buffer Pool、行級壓縮、全球實例支持、并行DDL、分區(qū)表自建索引以及自建分區(qū)表等。
3、POLARDB MySQL并行查詢優(yōu)化詳解
阿里云智能資深技術專家封仲淹為大家詳細介紹了POLARDB基于MySQL 8.0內核所做的并行查詢優(yōu)化。
并行查詢是POLARDB 8.0版本重磅推出的一個特性,阿里云POLARDB團隊投入了大量人力和物力來開發(fā)這個特性,并且從目前來看,客戶對于并行查詢的反饋非常好。
首先思考一個問題:為什么需要并行查詢?阿里使用MySQL的歷史已經過了十余年,在MySQL使用中遇到的所有問題,阿里基本都遇到過。其中最令人頭痛的問題就是當MySQL表的數據量特別大時,查詢會非常的慢。大部分方案都是通過拆庫將數據量縮小。
此外,業(yè)界的一個趨勢CPU單核頻率達到了瓶頸,增長放緩。而我們對于計算能力的訴求是永無止境的,因此CPU只能向著多核演進。而MySQL屬于傳統事務型數據庫,其無法并行執(zhí)行單條Query,因此無法充分利用多核的作用。業(yè)界的通用做法就是并行查詢,如今幾乎所有商業(yè)數據庫都提供并行查詢的能力,將任務分攤給多個線程并行計算,大幅度縮短計算時間。
那么,如何實現并行查詢呢?并行查詢首要關注的就是數據分區(qū),這樣才能使得每個Worker同時工作,互不干擾。由優(yōu)化器決定分區(qū)的數量,并且讓 Worker與分區(qū)動態(tài)綁定,實現“能者多勞”,防止熱點問題的出現,使得計算更加均勻,保障了并行查詢的線性性能提升。在并行計算里面,將單線程Plan Tree改為了多線程,劃分Worker和Leader兩個角色,盡可能將所有算子下推到Worker中,利用Worker并行能力加速,而讓Leader做匯總和反饋。
那么,并行查詢的效果如何呢?在TPCH 100G數據量的情況下,使用POLARDB并行查詢時發(fā)現70%的查詢可以被加速,40%的加速比超過10倍,幾乎能夠將CPU能力完全發(fā)揮出來。
與此同時,并行查詢還具有線性增長的能力,這意味著當數據量大的時候,只需要給與足夠多的CPU和內存,處理能力就能夠實現線性增長。在TPCH 5G、10G、20G以及40G四種數據量維度下,不斷調整并發(fā)度,而性能曲線基本上出現線性增長趨勢。
使用并行查詢也比較簡單,用戶可以在控制臺、Session或者SQL中進行設置自己需要的并發(fā)度。在未來,POLARDB會實現自動的DOP以及ResourceManager,并將支持Subquery、GIS和Blob以及Procedure等。
4、POLARDB 兼容Oracle能力解密與遷移
阿里云智能資深技術專家蔡松露為大家深度了揭秘POLARDB是如何實現兼容Oracle能力的。
之前POLARDB主要兼容MySQL、PostgreSQL等開源數據庫,而現在POLARDB也已經兼容了Oracle,這和之前兼容開源數據庫是不同的。之所以要兼容Oracle主要有幾個方面的原因,首先目前公有云已經進入了深水區(qū),因此需要更多地深入線下的存儲和計算場景;其次在如今的政治環(huán)境中,國家層面對于“去O”有了新的要求,而目前國內市場還屬于真空。基于以上背景、機遇和挑戰(zhàn),阿里云推出了POLARDB兼容Oracle的產品。而如何實現真正的兼容,以及如何將數據從Oracle遷移到POLARDB都存在很多挑戰(zhàn)。
POLARDB目前100%兼容了MySQL 5.6、MySQL 8.0以及PostgreSQL 11,此外還高度兼容了Oracle,因為Oracle語法本身非常復雜,因此整體兼容度可以達到95%左右。除了兼容Oracle之外,基于POLARDB本身的能力可以在Proxy層實現自定義讀寫分離和自動負載均衡。Oracle在引擎層能夠提供多寫能力,但是POLARDB提供的是一寫多讀能力。存儲層的Polar Store類似于Oracle的ASM。POLARDB本身的能力基本都被其兼容Oracle的產品復用了。
POLARDB Oracle版本從幾個層次做了兼容,首先是操作界面能夠完全兼容,對于DBA而言遷移成本基本為0。其次,對于應用開發(fā)而言,目前POLARDB使用的PG開源的SDK。而對于引擎架構而言,POLARDB的架構基本和Oracle類似。目前使用的存儲也是和ASM對標的。
兼容只是起點,使用POLARDB不只是獲得了對于Oracle的兼容性,還提供了更強大的能力。不僅能夠獲得云原生能力,兼容更多的數據生態(tài),并且還提供了更多的數據增值服務以及業(yè)界的解決方案,其背后是整個阿里巴巴生態(tài)的技術能力。
本次云棲大會上發(fā)布的POLARDB一體機使用了云原生的管控系統,沉淀了阿里巴巴之前在公有云上積累的管控經驗。一體機使用了軟硬一體化設計,實現了整機柜交付,并且集成了大量的成熟新硬件。主要面向政企行業(yè),能夠實現從Oracle一鍵遷移。一體機使用K8S底座,能夠方便與自有系統集成。
Oracle數據庫遷移需要經過評估、測試、遷移、管理、分析診斷以及付費等諸多環(huán)節(jié),而阿里云為用戶在各個階段提供了非常完善的功能。
總結而言,對于Oracle的兼容性可以分為五個維度:
? 工具和生態(tài):兼容DBA、開發(fā)者等相關人員的使用習慣;
? SQL語法:對應用而言需要改造成本接近于零;
? 性能:避免性能退化;
? 成本:可以將成本做到極低;
? 部署:線上線下實現混合云架構。
那么,如何做遷移呢?阿里云提供了數據庫和應用遷移(ADAM),其包含了采集、畫像、評估、改造以及遷移系統,能夠幫助企業(yè)最大限度降低ORACLE數據庫和應用遷移上云的風險、技術難度和實施周期。ADAM脫胎于阿里巴巴內部“去O”的實踐,能夠幫助用戶做到一鍵上云。
5、使用云原生技術構建可擴展的游戲數據庫架構
江娛互動CTO羅田唯為大家介紹了如何使用云原生技術構建可擴展的游戲數據庫架構。
江娛互動是一家專注于小游戲公司,頭部產品是“世界爭霸”小游戲。 “世界爭霸”小游戲首先算是一個大型社交系統,目前的服務數量達到了200多個,超過1百萬日活,每天5億次用戶請求。其次是大型數據庫系統,目前有200多個數據庫實例,總數據量在10TB之上。最后,游戲還是大型日志系統,這對于分析玩家很重要,“世界爭霸”每天日志量在50TB之上。
對于游戲產業(yè)而言,面對著低延遲、重支付和全球同服的挑戰(zhàn)。面對海量的請求、數據和日志,服務器數量多、架構復雜以及帶來運維壓力大,還有研發(fā)團隊能力不足、研發(fā)周期短以及要求高的挑戰(zhàn),完全由自己團隊負責是無法搞定的。
“世界爭霸”小游戲數據總量很大,單表數據量也大,并且QPS也很高。如果使用自建數據庫方案,使用MySQL數據庫,并且使用Cobar中間件做分庫分表。自建數據庫的方案缺點很明顯,架構比較復雜,搭建和維護的成本都非常高,并且穩(wěn)定性難以保障。如果采用上云的傳統方案就是使用阿里云RDS來替代MySQL,這樣的缺點也是這種方案不夠靈活,這樣的方案對于傳統電商而言可能夠用,但是對于游戲而言是不足夠的,雖然搭建和維護比較方便,但是穩(wěn)定性卻不夠好。
從2019年5月使用POLARDB以來,江娛互動目前已經成為了POLARDB華北區(qū)最大客戶。POLARDB的優(yōu)點在于存儲和計算分離,擴展性強,并且單表容量大,小表性能平穩(wěn),同等規(guī)格下是RDS性能的7倍,并且相較于RDS能夠節(jié)省一半成本。POLARDB穩(wěn)定性也非常高,SLA接近于100%。
6、大規(guī)模實時互動課堂下的POLARDB實踐
猿輔導資深研發(fā)架構師李陽明為大家介紹了在線教育公司猿輔導的大規(guī)模實時互動課堂下的POLARDB實踐。
猿輔導是一家在線教育公司,正在為超過2.5億的中小學生和家長提供多元化的智能教育服務,主營業(yè)務為在線題庫、拍照搜題、實時互動課堂、直播云輔導等。
猿輔導對于實時互動課堂的定義包含三個要素:實時可互動、活動類型豐富以及用戶體驗穩(wěn)定一致。對于在線課程測驗這個典型場景主要面對的挑戰(zhàn)有三條,即流量規(guī)模比較大,業(yè)務需求多樣和業(yè)務變更頻繁。首先,對于猿輔導這樣的面向K12在線教育而言,流量會有明顯的周期差異,存在明顯的波峰和波谷,中小學生往往會在工作日的晚上或者周末才有時間上課。此外,房間規(guī)模也不同,猿輔導有上千個千人班級,還有若干十萬人的班級,而這兩種班級的流量是不同的。其次,猿輔導的業(yè)務需求比較多樣,不同年級的功能側重點不同,不同角色關心的內容也不同。
猿輔導最初使用MySQL + Redis方案,MySQL落盤核心數據并提供回放服務,Redis則實現各種榜單供直播使用。這種方案的問題是Redis數據無法復用,導致寫多份,并且單機MySQL存在性能瓶頸無法支持更高的QPS。后來猿輔導就引入了POLARDB數據庫,并將統計功能進行了微服務化,去掉了Redis。
這樣的方案運行了半年,也遇到了三點主要的問題:處理能力被高估、缺乏隔離和缺乏擴展性。于是猿輔導借助POLARDB實現的數據庫架構的再次演進,實現了數據庫的垂直拆分、水平拆分、讀寫分離和提交異步化。
猿輔導現在的數據庫架構還存在著一些遺留的問題,比如負載均衡策略不可配、永久回放帶來數據負擔以及課堂外數據統計也是一個負擔。因此,猿輔導也進行了一些負載均衡方面的優(yōu)化,比如支持按照負載進行Shard調度,也支持手工指定房間的Shard,而且使得基礎組件支持動態(tài)下發(fā)分片信息。
原文鏈接
本文為云棲社區(qū)原創(chuàng)內容,未經允許不得轉載。
總結
以上是生活随笔為你收集整理的云原生数据库POLARDB专场“硬核”解析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何使用confd+ACM管理Nginx
- 下一篇: 这6种编码方法,你掌握了几个?