迎雙11十周年,OceanBase 2.0挑戰(zhàn)新巔峰

2018年是“雙11”十周年。2009年11月11日,當時的淘寶商城(天貓的前身)舉辦了首屆網絡促銷活動,當天銷售額為0.5億元;2017年的雙11,天貓、淘寶總成交額1682億元,創(chuàng)造了25.6萬筆/秒的新支付峰值,數據庫處理峰值達4200萬次/秒。2017雙11開始后的7分23秒,支付寶的支付筆數突破1億筆,相當于5年前雙11全天支付總筆數!

對于阿里來說,每年的雙11就是一個超級工程,而下一年的雙11又會突破前一年的紀錄,因此雙11其實是一個不停“膨脹”的無限工程。支撐雙11的核心數據庫,就是自2010年開始立項的金融級分布式數據庫OceanBase。

OceanBase的目標是成為新一代商用關系型數據庫,其差異化優(yōu)勢在于底層的分布式技術。此前的OceanBase 1.0成功支持了2017年雙11的支付峰值,如今OceanBase 2.0已正式上線,迎接即將到來的2018支付新峰值。

OceanBase 2.0有何新功能?對1.0版本進行了哪些優(yōu)化?能否支撐今后雙11的無限擴展? OceanBase團隊的兩位專家楊傳輝和韓富晟解讀了2.0版本的特點,兩位專家均強調OceanBase 2.0的設計可支撐百萬支付峰值甚至無上限,2018年還將在不增加服務器的基礎上“頂住”新的峰值。此外,在完全兼容MySQL后,OceanBase 2.0加強了對Oracle數據庫的兼容。OceanBase還在以極致精神打磨軟件,挑戰(zhàn)世界級基礎軟件。

進一步提升分布式架構

今年以來,國內云服務商陸續(xù)推出了各自的分布式數據庫,楊傳輝強調OceanBase是唯一一個走通用數據庫路線的產品,其特色在于分布式架構對用戶透明,不需要修改業(yè)務。OceanBase的技術定位為通用的金融級分布式商業(yè)數據庫,從支持金融行業(yè)起步,再逐步拓展到支持各個行業(yè)。

迎雙11十周年,OceanBase 2.0挑戰(zhàn)新巔峰

螞蟻金服研究員 楊傳輝

相對1.0版本而言,OceanBase2.0在分布式架構方面更上一層樓。OceanBase 1.0已經實現(xiàn)了用戶對機器故障的無感知,也就是多臺機器部署數據庫,無論哪臺機器宕機都可以30秒內無損切換,即所謂高可用。OceanBase 2.0進一步實現(xiàn)了多臺機器部署數據庫的時候,用戶對數據分布的無感知,這就是數據庫層面的自動分片和自動負載均衡。OceanBase 2.0支持在線數據分片,當某個數據分片數據量或者訪問量太大時,在線分裂成多個分片,整個過程對服務沒有任何影響。

分布式數據庫的數據分片,即把數據集切分成若干子集再分布到不同機器上,達到分布均勻、負載均衡、擴縮容時數據遷移少等目的。楊傳輝強調,一臺服務器上的數據分片數量,說明了數據庫底層的技術能力,因為分片越多則意味著系統(tǒng)開銷越大,數據分片要能做到足夠小,才能實現(xiàn)整個集群負載的精細化控制和快速數據恢復。外界基于MySQL方案的分片數能達到單機幾十個,而OceanBase 2.0則可支持的單機分片數達到10萬到100萬個,從而實現(xiàn)了無限的可擴展能力。

在實現(xiàn)用戶對機器故障無感知和數據分布無感知后,OceanBase 2.0還對分布式事務進行了改進。OceanBase 1.0已經支持了分布式事務,2.0版本則進一步實現(xiàn)了全局快照和全局索引。所謂全局快照,即當一條SQL語句涉及到多臺機器時,通過全局快照保證各臺機器的強一致讀取。在全局快照讀的基礎上,OceanBase2.0實現(xiàn)了全局索引,就真正做到了用戶對多機環(huán)境的無感知。此外,由于出現(xiàn)了全局快照,為了提高局部的租戶級數據一致性,OceanBase 2.0在全局時鐘的基礎上又引入了租戶級時鐘,從而保證單個租戶的數據一致性,而無須頻繁引用全局時鐘,這樣就避免了全局時鐘成為整個系統(tǒng)的瓶頸。

強化對Oracle數據庫的兼容

除了日益強大的分布式架構,OceanBase 2.0相比OceanBase 1.0在功能上最大的亮點是為用戶提供了一個全新的Oracle兼容模式。眾所周知,MySQL是互聯(lián)網場景中最為流行的數據庫,但從市場規(guī)模、功能完備等方面看,Oracle依然是商業(yè)數據庫的絕對領導者。OceanBase的Oracle兼容模式使得傳統(tǒng)企業(yè)的應用可以平滑遷移到OceanBase,在不改變業(yè)務代碼的前提下充分享受分布式數據庫在擴展性、可用性和系統(tǒng)成本等各個方面帶來的收益。

從MySQL到Oracle的兼容,不僅僅是SQL語法、數據類型、功能等方面的改變,更重要的是從專用數據庫到商用數據庫的全面功能升級,而這一切都是基于OceanBase對于自有內核的全面掌握。 例如,遷移傳統(tǒng)數據庫應用中,存儲過程的支持是繞不過去的一道難題。OceanBase 2.0在兼容Oracle存儲過程各種復雜、靈活的語法與功能的同時,還進一步通過編譯執(zhí)行(Just-in-Time Compilation)等技術,大大提升了其執(zhí)行效率和具體場景中的實用性。與此同時,OceanBase 2.0還提供自定義函數、窗口函數、層次查詢、dblink、臨時表、sequence等一系列豐富的數據庫功能。

Oracle兼容模式的另外一個體現(xiàn)是數據庫內核能力方面的增強。例如,為了更好的處理復雜查詢的處理能力,OceanBase 2.0全面升級了分布式查詢的優(yōu)化和執(zhí)行引擎,增強了對復雜業(yè)務的支持能力;為了實現(xiàn)更精確的查詢優(yōu)化,OceanBase 2.0實現(xiàn)了直方圖以及實時統(tǒng)計信息更新的機制;同時, OceanBase2.0實現(xiàn)了基于用戶參數的計劃選擇機制,增強了系統(tǒng)對大小查詢混合場景的支持。諸如此類,OceanBase 2.0在SQL引擎中引入了大大小小數十種內核優(yōu)化手段,向成熟的商用數據庫又邁進了一大步。

數據庫應用與數據的平滑遷移是升級過程中的重要考慮因素。OceanBase 2.0數據遷移平臺支持Oracle業(yè)務到OceanBase 2.0的一鍵平滑遷移,為用戶系統(tǒng)的升級鋪平了道路。

OceanBase 2.0剛剛轉向Oracle兼容,任重而道遠。楊傳輝表示,相信隨著整個團隊的不斷努力,OceanBase會持續(xù)降低用戶使用數據庫的門檻,實現(xiàn)對用戶生產力的充分解放與賦能。

挑戰(zhàn)百萬支付新峰值

2017年雙11的支付峰值為25.6萬筆/秒,那么2018年及以后的支付峰值目標就上看百萬筆/秒甚至更高。這么高的目標能否實現(xiàn)?這就是OceanBase 2.0問世的目的:今年雙11交易支付,全部升級到OceanBase 2.0,從而挑戰(zhàn)百萬支付新峰值。

在支撐更高的支付峰值方面,OceanBase 1.0已經無法對數據進一步的拆分而不影響上層的業(yè)務,OceanBase 2.0的目標就是在用戶無感知的前提下可以把數據拆分到無限多的機器里,無需上層的業(yè)務改造就可以支撐百萬甚至更高的支付峰值。

OceanBase作為基礎軟件,是整個支付業(yè)務性能的基石。OceanBase一直以來也把性能作為核心功能對待,一直為業(yè)務提供性價比最高的數據庫服務。OceanBase 2.0版本繼續(xù)發(fā)力,在性能上獲得了跨越式提升,在線事務處理能力(也就是處理OLTP類型業(yè)務的能力)提升了50%,為完成2018年雙11不添加一臺服務器支持新的業(yè)務峰值的目標提供了堅實的基礎。

負責性能優(yōu)化工作的韓富晟具體介紹了OceanBase 2.0的各項改進。OceanBase 2.0主要從三個層面下了大功夫。第一,是數據庫架構層面的革新;第二,是系統(tǒng)實現(xiàn)層面的精雕細琢;第三,是數據庫運行環(huán)境的整體調優(yōu)。

迎雙11十周年,OceanBase 2.0挑戰(zhàn)新巔峰

螞蟻金服資深技術專家 韓富晟

OceanBase 2.0對事務提交流程進行了大重構,大幅度減少事務提交流程的開銷。支付業(yè)務是典型的在線事務處理類,以短小事務為主,事務的提交執(zhí)行的頻率特別高。事務的提交也通常是數據庫內部最耗時的一部分。OceanBase 2.0打通日志服務與事務服務,將原先分布式事務兩階段提交的多條日志優(yōu)化到每個分區(qū)只有一條日志,依然保證很好的支持事務的原子性和一致性的功能。日志條目數的減少簡化了提交流程,不僅提升了系統(tǒng)處理能力,還顯著減少了事務提交的耗時。

OceanBase 2.0還在哪些地方精打細算了呢?實際上,OceanBase 2.0的整個請求處理路徑都進行了細致的優(yōu)化。以內存分配器為例,OceanBase數據寫入Memtable過程中,會在數據存儲和索引更新過程多次分配內存,內存分配器很容易成為系統(tǒng)的瓶頸。通常解決這個問題的方法是讓分配器預分配很多內存,但是在OceanBase分布式多分區(qū)的架構下,給大量空閑分區(qū)預分配意味著大量閑置的內存無法有效利用。OceanBase 2.0啟用了自適應的內存分配器算法,只對寫入量大的分區(qū)進行內存的預分配,有效平衡了空間占用和系統(tǒng)性能。

數據庫一般都是操作系統(tǒng)壓力最大的進程,也經常觸碰操作系統(tǒng)的各種極限。OceanBase2.0在實際生產環(huán)境大壓力運行時,我們還發(fā)現(xiàn)了Linux內核的bug。這個bug從3.1版本內核開始出現(xiàn),目前3.1也是業(yè)界在生產環(huán)境普遍使用的一個版本。在內核專家的支持下,我們發(fā)現(xiàn)了Linux調度系統(tǒng)的缺陷,這個缺陷使得 CPU無法充分利用。僅解決此bug一項,就給系統(tǒng)帶來了7%的性能提升。

為什么OceanBase要這么細摳系統(tǒng)性能呢?這是因為做軟件有兩大代價要應對,一個是開發(fā)代價,一個是運行代價,有些系統(tǒng)很側重開發(fā)代價,特別是變化頻繁的業(yè)務系統(tǒng),好的開發(fā)效率是系統(tǒng)迭代的關鍵。但是數據庫這樣的底層系統(tǒng)在關注開發(fā)效率的同時,更關注運行代價或者說是運行效率,為什么要關注運行效率?對于一個商業(yè)數據庫來說,運行在成千上萬臺機器上,點滴運行效率的提升可以帶來計算資源的大量節(jié)省,比如OceanBase 2.0對于在線處理業(yè)務50%的性能提升,如果原先是1萬臺機器上運行的話,通過性能提升就能節(jié)約出三分之一的機器。“越基礎的軟件性能越關鍵,一個微小的改變就會為業(yè)務節(jié)省大量的資源,持續(xù)的系統(tǒng)優(yōu)化是必須要做的事情。”韓富晟表示。

安全、升級與遷移

OceanBase 2.0還在更多方面進行了優(yōu)化,這些包括數據安全與質量、軟件系統(tǒng)與遷移等方面的優(yōu)化。

在數據安全方面,OceanBase 2.0實現(xiàn)了商業(yè)數據庫一個重要功能,即數據閃回(Flashback)。數據閃回之所以特別有用,在于一旦發(fā)現(xiàn)操作有誤,可以閃回到一段時間之前的數據狀態(tài)。OceanBase 2.0支持數據的多版本存儲,即把內存中的數據存儲到磁盤時,會把并發(fā)的多版本以及歷史版本信息等根據用戶需求存儲到磁盤里。

如何實現(xiàn)OceanBase 1.0到2.0的平滑過渡?一方面,為了保障業(yè)務的平穩(wěn)過渡,OceanBase提供了灰度切換和業(yè)務雙寫,灰度切換指的是數據流量按一定百分比逐步切換到新系統(tǒng)中,一旦出現(xiàn)問題即可回滾。而業(yè)務雙寫,即業(yè)務系統(tǒng)同時使用1.0和2.0兩個版本,兩套數據庫并行工作以及進行數據對比,在運行很長一段時間后確保切換沒有問題,再一點一點按比例切換,切換的過程中仍然使用灰度控制,這樣就保證了從1.0到2.0的平滑升級。

兼容性也是OceanBase團隊提供的1.0到2.0版本升級中的重要保障機制。OceanBase支持1.0版本與2.0版本同時運行在一個業(yè)務下,“在一個集群里,兩個大版本的數據庫同時運行,技術難度非常大”,楊傳輝強調。首先是不同版本數據庫之間的協(xié)議兼容,也就是當1.0版本給2.0版本發(fā)1.0的協(xié)議以及2.0版本給1.0版本發(fā)2.0的協(xié)議,二者之間都能兼容。此外,在數據格式方面,由于2.0版本對底層進行了比較大的改造,因此2.0在兼容1.0的數據格式方面也做了細致的工作。而更難的是功能兼容,在2.0版本中對不少功能都進行了較大的改動,因此每一個被改動功能的兼容性都需要逐一處理。

在遷移工具方面,OceanBase支持阿里巴巴和螞蟻金服體系內的數據遷移工具,例如阿里云平臺上的數據傳輸服務DTS。在螞蟻金服內部開發(fā)了MySQL到OceanBase一鍵遷移平臺,業(yè)務不需要修改一行代碼,就可以將原來使用的MySQL切換為OceanBase。

OceanBase 2.0還在其它方面進行了更多的優(yōu)化。在底層優(yōu)化方面,OceanBase 2.0將實現(xiàn)存儲和計算的分離,這相當于在數據庫底層形成了一個分布式存儲系統(tǒng)。在自治數據庫方面,OceanBase整個的產品愿景一直在朝這個方向發(fā)展,盡可能減少人工干預。

OceanBase 2.0的正式對外發(fā)布,代表了OceanBase產品化的又一個新里程碑,也是OceanBase在走向商業(yè)數據庫產品之路上的一個重要節(jié)點。OceanBase的持續(xù)開發(fā)和優(yōu)化過程,反應了中國基礎軟件在基于云計算的分布式計算時代的新機遇,盡管要重走一遍傳統(tǒng)IOE軟件曾經走過的基礎軟件優(yōu)化道路,但基于云計算的分布式環(huán)境給了中國基礎軟件一個劃時代的機遇,抓住這個機遇就有可能成就來自中國的世界級基礎軟件,OceanBase也有機會站在世界軟件之巔!

極客網企業(yè)會員

免責聲明:本網站內容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網站出現(xiàn)的信息,均僅供參考。本網站將盡力確保所提供信息的準確性及可靠性,但不保證有關資料的準確性及可靠性,讀者在使用前請進一步核實,并對任何自主決定的行為負責。本網站對有關資料所引致的錯誤、不確或遺漏,概不負任何法律責任。任何單位或個人認為本網站中的網頁或鏈接內容可能涉嫌侵犯其知識產權或存在不實內容時,應及時向本網站提出書面權利通知或不實情況說明,并提供身份證明、權屬證明及詳細侵權或不實情況證明。本網站在收到上述法律文件后,將會依法盡快聯(lián)系相關文章源頭核實,溝通刪除相關內容或斷開相關鏈接。

2018-09-26
迎雙11十周年,OceanBase 2.0挑戰(zhàn)新巔峰
2018年是“雙11”十周年。

長按掃碼 閱讀全文