天天看點

展望雲計算新時代資料庫計算力的進化

從1970年關系資料庫理論被提出,到2006雲計算概念的誕生,半個世紀以來IT行業的科技革新不斷引領着時代潮流。作為IT技術的核心領域之一,資料庫如何在雲計算的大時代背景下持續進化,開拓創新。

10月12日的雲栖大會·阿裡雲自研資料庫POLARDB專場,阿裡雲研究員餘鋒帶來了《展望雲計算新時代資料庫計算力的進化》主題分享,探讨了阿裡雲資料庫團隊自研資料庫POLARDB的設計理念,并一起展望了新一代雲資料庫的未來。

<b>雲資料庫的進化</b>

資料庫是計算,是存儲,也涉及網絡和記憶體,但它們都是非常密集的基礎軟體。事實上,過去大家所接觸的諸如中間件、轉化器之類的都在做流量,而資料庫是真正的知識密集型事務。一個資料庫的好壞,取決于它是否是一個能把計算能力、存儲能力、網絡能力還有記憶體能力發揮到極緻的綜合軟體。是以,POLARDB所有的進化和發展都是圍繞的這三方面。

展望雲計算新時代資料庫計算力的進化

全世界範圍内的流行資料庫有幾百種,但它們都是計算、存儲、網絡這三個基礎東西的綜合體,每當計算的硬體、存儲或是網絡發生變化時都是資料庫變革的契機,每一個變化也都蘊含着各種各樣的機會。

現在,在阿裡雲或者在其它雲廠家都可以很友善地拿到一台記憶體T級别的固定機,這也展現了記憶體方面極為恐怖的增長速度。網絡也是如此,RDMA網絡就已經發生了非常大的變化,雖然對于個人來說因為成本考量一般是不會購買使用的,但是IT公司就會去擁抱這些東西,這是硬體上的變化。然後從計算的角度,多核CPU、128核已經十分普及。現在還有很多基于GPU的資料庫,阿裡雲POLARDB在這一塊也有研究和探索。存儲同樣也是,比如SSD和英特爾研發的Ethernet。記憶體也不例外,今天一台機器就會有幾T的記憶體,太為普遍。網絡上的InfiniBand雖然還是很高端,但相信未來大家一定能夠很友善地擷取使用。

硬體的變化必然會伴随着軟體的變化。不同于資料庫服務,資料庫更像是汽車上的引擎,而資料庫服務就需要提供一輛整車,還要提供4S和整個生态服務。整個DB引擎在雲資料庫環境裡其實是很小的一部分,需要像Docker隔離,是以如果隔離技術應用不夠,随之帶來的使用體驗就會非常差。比如“雙11”,過去一個包從客戶機器到達DB後端可能需要百八十微秒,現在則隻需要三十微秒左右,能夠使得整個雲服務更有競争力、使用更便捷,在各個環節追求極緻。圍繞計算、存儲和網絡,POLARDB也在緻力于成就極緻的體驗。

<b>新一代雲資料庫POLARDB</b>

對比MySQL,POLARDB擁有了6倍的性能提升——這是它最核心的一點,目前也已經開放測試。那麼6倍的性能提升是如何實作的呢?有幾樣東西是共見的:第一,最新的硬體;第二,從頭建構的存儲、引擎。POLARDB百分百相容MySQL,這也就是意味着原來怎麼做,現在同樣遵守,差別隻是更大更好更便宜,關鍵在于它使用了高CPU、網絡網卡、RDMA和規格,能夠解決最重要的痛點。過去的MySQL單機2到3TB,實際上的POLARDB卻有高達100TB的盤。

展望雲計算新時代資料庫計算力的進化

當發生災難時資料通常無法快速轉移,是以就會帶來一個疑惑:為什麼需要去做POLARDB?事實上POLARDB的研究已經曆經了兩三年,客戶産品使用中所遇到的很多問題和困難在現有的方案和架構上并不能很好地解決,但是POLARDB卻能夠完美地滿足客戶最大訴求。         

雖然看起來,似乎隻要有好的硬體均可以滿足這一要求,然而其實并沒有那麼簡單。最早的MySQL标準都是一主一從結構,是以SQL寫入時的資料流基本是單向流進,會有八個資料流流動。資料流動一多,也就意味着IO消耗會過大,延遲變大。除去這個原生模式外,RDS和AWS采取的做法都是将官方版本放于雲上,提供存儲以及更好的彈性。POLARDB則是為雲而生,其所有的彈性、隔離、IO存儲均是針對雲的特點所設計的。

展望雲計算新時代資料庫計算力的進化

在系統的演進中,團隊對整體業務有了很深的了解,今天的資料流已經是極大簡化後的版本。如上圖所示,左邊是單向的,右邊則是雙向資料流,比如準備發生同步時資料會主動推給中間節點,是以這對于技術要求會很高。此外,過去是集中式存儲,資料同步中的Copy成本很高,并且會造成很多不可見的問題。在MySQL的使用上,過去因為一些資料不可用是以很少有人會把它用于關鍵場合,而POLARDB的設計具有金融級别的可靠性,能在硬體基礎上把很多事情簡化做好,讓它更可靠、更簡單。

如果有一個好的資料庫卻不知道如何使用,或者說配套不完整,這些都是空談。POLARDB所提供的資料庫服務則具有完整的生命周期,從上雲端到擴容、縮容全覆寫。淘寶“雙11”讓團隊明确了網際網路高可用的使用,是以對于容災、擴容、彈性、存版都了解得非常清楚,是以在設計POLARDB時即針對這些場景,後續又逐漸疊加了金融、政企等場景。

展望雲計算新時代資料庫計算力的進化

在設計之初,POLARDB的計算和存儲就是分離的,如上所示的圖中可以看到非常明顯的三層:首先是使用者應用層,然後是計算層,最後是存儲層。過去的計算存儲不分離,就會導緻在節點恢複時需要資料秒搬,但一般很少有系統可以做到這一點,比如幾個T的資料需要搬一至兩天,不可能突破實體極限。在計算、存儲完全分離後系統還設定了一個中間件,讀寫分離的情況它的寫能力是非常強的,中間件也會幫助做讀寫能力和自動識别讀寫能力,同時成本也很低。

系統設計需要非常可靠資料,這是資料庫最核心的東西也是底線。通過計算以後,存儲分離的情況下資料都在後端,就形成了一個标準的分布式資料庫,可以在生命周期裡擴容、縮容、讀寫分離以及容災。但是下面還需要考慮服務遷移的問題,可以用商業資料庫或MySQL解決:諸如DTS、BS的商業資料庫能夠用邏輯複制拉取過來;MySQL則可以用實體設定。POLARDB能夠實作節點同步,即邏輯複制就是一條複制一次,實體複制就是一批拿過去,效果會更高。

資料如果通過實體複制以及OSS的方式中轉上來,速度會非常之快。根據銀行要求,未來的營運資料需要保留較長時間,是以可以把資料導入到OSS上等需要的時候再導出。RDS是一個完整的體系,能夠百分之百相容所有生态,也希望POLARDB能和生态一起演化。

<b>國際化、智能化、持續創新</b>

PPOLARDB最重要一點是它的資料庫可以和國際接軌。有一些國内外的合規要求不太一樣,比如之前新加坡郵政所做的項目對合規要求就非常高,但這些東西屬于輸出的核心功能,RDS裡就有的,是以系統能夠很容易地繼承過來并做得更好。未來,相信POLARDB會朝着資訊化、網際網路化、國際化、智能化、創新化的方向不斷進化。

展望雲計算新時代資料庫計算力的進化

總之,POLARDB是團隊從2010年就開始做的雲服務,當時隻有MySQL5.1和SQLserver,2012年開始接入電商雲,到2014年時“雙11”基本訂單都在其中處理。雖然沒有一個強大的場景,但是一個場景就能夠滿足大家多數的需求。等到POLARDB足夠強大就可以把很多産品功能替代掉,更好地延續。未來,整個産品體系會更多地往自研體系走,使用者的使用習慣和操作都可以保留,能夠擷取更易用、更穩定的服務。

連續五年,項目每年都會有1千多項功能優化——這是實踐的積累,也是團隊成員的不懈努力。行業發展最怕資料庫連接配接斷掉,過去RDS隻覆寫中國,現在也開始覆寫了這麼多節點。全球化的資料庫是團隊一直努力的方向,也希望未來能夠很好地實作這一需求。

展望雲計算新時代資料庫計算力的進化

今天的POLARDB實際上應該稱為POLARDB or MySQL,因為很快就将釋出用于其它的産品的POLARDB  for PG,充分發揮整個産品體系及生态的優勢,請拭目以待吧。