改寫資料庫歷史的中國人
資料庫好像從來都不是中國人的強項。但轉機出現在4年前。
4年前,阿里巴巴宣布向天弘基金注資,成為餘額寶的資金管理單位,如今天弘基金管理的資金超過15186億,蟬聯行業第一,改變了整個基金行業的市場格局。
4年前,由螞蟻金服、騰訊、中國平安等發起成立的互聯網保險公司眾安保險成立,如今的估值已經超過800億港元,再過幾天就將在香港IPO募集資金超過100億港幣。
是的,互聯網正在改變所有行業,同樣包括監管最為嚴格、對資料庫要求也最為嚴格的金融行業。如今,當9月21日阿里雲全新一代雲資料庫產品POLARDB在公開的跑分測試上,讀性能超過100萬QPS、寫性能超過13萬TPS,全面超越AWS Aurora站立在世界之巔的時候,在高性能通用資料庫這塊高地上,第一次有了中國面孔。
契機
眾所周知,「IOE」中最難去的是「O」,因為Oracle至今在中國商業交易型資料庫市場仍然擁有超過50%的絕對多數市場份額。
而在對交易型資料庫要求最嚴格的金融領域,特別是國有四大行的核心系統,又都是IBM DB2資料庫+IBM大型機/小型機的天下。就連DB2的小弟Informix,對國內資料庫廠商來說都如獲至寶——筆者還記得南大通用CTO在2015年發布基於Informix的GBase 8t的時候,很負責任地說,我們一年能研究透20%就很不錯了——那時候,筆者真的有些絕望,看來中國資料庫技術真的落後IBM、Oracle二十年!
但是,世事難料,4年前的一天上午,工行在全國多地的櫃檯、ATM、網銀業務出現故障,導致1個多小時的故障。也就是在那個時間點之前不久,眾安保險成立、天弘基金管理餘額寶,互聯網至少已經攻破金融行業的兩大領域——保險、證券。
互聯網為傳統行業帶來的不僅僅是商業模式,更重要的是技術革命。
「傳統金融是非常保守的,但是互聯網總有一個膽大的,比如說這兩天IPO的眾安保險,第一天就決策把整個系統放在阿里云云資料庫上。」阿里雲資料庫業務資深總監余鋒介紹,「雖然幾年前我們對金融業務的理解、對穩定性的理解還遠遠不夠,讓他吃了很多苦頭,但站在今天的業務規模看來,正是因為架構上的領先,才支撐了它的迅速發展。」
如今交易金額已經突破了萬億規模、成為了全球最大貨幣基金的餘額寶,在2013年6月上線之初還是採用傳統底層技術架構,但業務在最初短短半個月就增長了14倍,每晚清算的時間迅速從一小時變成通宵達旦。這樣的擴張速度,如果採用傳統IT的方式擴容,今天單單IT系統的採購費用就會讓天弘基金不堪重負。
正是這樣的契機,給了阿里雲POLARDB資料庫成長的機會。
勇氣「我2010年剛來的時候,我們一票人關在小黑屋裡,你讀一塊、我讀一塊,然後大家來分享一下……然後大概一兩年以後,我們把核心資料庫給換了……再過一兩個月,我們覺得還不錯嘛,就開始把我們的能力產品化。」余鋒回憶。
其實阿里雲的資料庫研發是從自家的應用需求開始的,研習成熟商業資料庫並開始自研商業交易型資料庫,比南大通用早了整整5年,比浪潮早了6年。
原因很簡單,因為互聯網的高並發,遠遠超過以往任何一個傳統行業的高並發——如果互聯網企業像傳統行業一樣照搬國外成熟的商業資料庫和高可靠的小機伺服器和存儲設備,那麼高昂的與日俱增的IT成本,會讓這些依靠風投度日的互聯網企業很可能永遠也等不到盈利的那一天。
阿里雲資料庫掌門人余鋒
「POLARDB的研發始於3年前。我們是通過在一個主庫下創建更多的存儲節點,讓存儲節點承擔負載壓力來解決問題的。」余鋒所說的其實就是第三代分散式共享存儲架構POLARSTORE,他解釋說,「因為過去在傳統架構體系下,創建讀庫需要數據複製的過程,10TB數據即便用最高速的網路跑,都需要70個小時。我們採用了共享存儲架構——因為數據不需要再搬動,很多事情變得非常簡單。」
但共享存儲架構說起來簡單,實際上背後卻非常複雜。據說有個從來都是主動追著產品經理要任務的研發同學,這次負責POLARDB的售賣系統也經常被搞得抓狂,因為POLARDB的彈性售賣接入實在是太複雜了,經常一天編程測試下來,有幾十個bug要解。但最終,一個個bug都被攻克下來,這需要的不僅僅是堅持,更需要勇氣。
另一位研發同學負責做PFS,需要驗證創建POLARDB實例的全鏈路功能,就必須搞定分散式文件系統,但阿里雲當時在PFS上的積累並不深,大家心裡都沒底,於是準備了備選的NFS方案。沒想到這位同學帶著兩三個實習生,只花了兩三周時間就把硬骨頭給啃下來了,按照計劃完成了創建主實例和只讀實例的任務。
到如今,余鋒現場演示的主實例創建、資料庫加壓、創建只讀存儲節點、壓力被存儲節點分擔的整個過程只需要3分鐘時間。從傳統架構70小時,到今天的3分鐘,得益於共享存儲的架構。而這,如今已經是經過實踐證明的低成本解決方案。
」我覺得阿里雲工程師團隊特別不容易的一點,就是只要今天有這樣一個契機,整個團隊就有這樣的勇氣去克服任何困難。」余鋒由衷地說道,「他們大多非常年輕,也非常拚命,願意去花時間去琢磨。所以我其實蠻為這個團隊自豪的。」
極致其實,POLARDB的原理並不複雜。阿里雲資料庫產品總負責人張雲楊介紹說,POLARDB其實就是採用了一種計算和存儲分離的架構——DB運行在計算節點,計算節點組成了一個計算資源池;數據都放在存儲節點上,存儲節點組成了一個存儲資源池。
如果CPU和內存不夠了,就擴充計算資源池;如果容量或者IOPS不夠了,就擴充存儲資源池,兩個池子都是按需擴容。而且存儲節點和計算節點可以分別向兩個方向優化,存儲節點會選擇低配的CPU和內存,提高存儲密度,而計算節點可以選擇小容量、低配的SSD作為操作系統和日誌盤,上多路伺服器增加CPU的核數。
眾所周知,關係型資料庫是IO密集型的應用,IO性能的提高對資料庫的性能提升至關重要。在POLARDB里,為了追求更高的性能、更低的延遲,阿里雲資料庫團隊大膽拋棄了Linux內核提供的各種機制,比如塊設備、各種文件系統例如ext4、TCP/IP協議棧和socket編程介面等,而選擇了另起爐灶。最終,POLARDB實現了一整套在用戶態運行的IO和網路協議棧。
比如,POLARDB用戶態協議棧解決了內核IO協議棧慢的問題。這種技術實現最大化的和高速設備進行性能交互,實現一顆CPU達每秒約20萬次IO處理的能力,並且保持線性的擴展能力,也就意味著4顆CPU可以達到每秒80萬次IO處理的能力,在性能和經濟型經濟型上遠高於內核。
網路也是類似的情況。過去傳統的乙太網,網卡發一個報文到另一台機器,中間通過一跳交換機,大概需要一百到兩百微秒。POLARDB支持ROCE乙太網,應用程序通過RDMA網路,直接將本機的內存寫入另一台機器的內存地址,或者從另一台機器的內存讀一塊數據到本機,中間的通訊協議編解碼、重傳機制都由RDMA網卡來完成,不需要CPU參與,使性能獲得極大提升,傳輸一個4k大小報文只需要6、7微秒的時間。
如同內核的IO協議棧跟不上高速存儲設備能力,再一次的,內核的TCP/IP協議棧跟不上高速網路設備能力,被POLARDB的用戶態網路協議棧代替。這讓POLARDB完成了6倍性能於MySQL的壯舉。
不僅如此,得益於分散式共享存儲,POLARDB還實現了OLTP(在線事務處理)與OLAP(聯機分析處理)一體化的資料庫系統整體設計。這種HTAP(混合交易/分析處理)資料庫實際上代表了企業級資料庫的未來,因為它解決了企業核心應用以往難以實時計算分析的難題,不僅與如今聲名鵲起的SAP HANA的功能類似,而且在OLTP性能上也不輸於Oracle。同時由於分散式共享存儲成本的下降,使得POLARDB在價格上得以與RDS看齊。
至此,阿里雲資料庫家族已完成世界上主流的關係型、鍵值型、文檔型、搜索型、時序型、列式資料庫引擎的布局, 形成HybridDB、HiTSDB、OpenSearch等全線資料庫產品及工具,領先行業進入第三代可靠性方案,採用三機房強制同步機制,以基礎版、高可用版、金融版三大場景實例,護航企業數據安全。
可以說,阿里雲資料庫改寫了商業資料庫的歷史——基於新的3DXpoint存儲介質、NVMe SSD和RDMA網卡等最新的軟硬體優化技術,實現了低成本與高性能的突破。在標準場景下,性能是MySQL的6倍、單實例實現100T級存儲容量、實現AWS Aurora性能1.2倍的POLARDB,已經成為世界級的雲資料庫引導者。
文/余文
《科技看門道》堅持深度報道,希望能通過資深媒體人對IT產業熱點新聞的深入思考,挖掘其背後的商業邏輯和創新模式——不僅看熱鬧,更要看門道!
《科技看門道》主筆在行業渠道媒體擁有超過15年的從業經歷,不僅對IT消費類和企業級軟體、硬體、雲計算、大數據、人工智慧均有較深入的理解,同時見證了中國IT產業鏈上下游合作生態圈包括分銷、零售、SI、ISV和CSV的進化歷程,見證了金融、能源、製造、醫療、教育、政府、零售、高科技等行業的信息化之路。
《科技看門道》相信,IT產業在供給側的改革——包括雲計算、大數據、移動互聯、人工智慧等,將會成為推動各行各業發展進步的核心力量。
推薦閱讀:
※笑他是混混,因為你沒看懂劉邦布的局
※舊影瑣憶·戰士亦凡人
※北魏佛教及石窟造像的歷史 2
※於天罡:老子的歷史影響
※周恩來在國民革命軍北伐戰爭中,做了些什麼?