2018年是“雙11”十周年。2009年11月11日,當(dāng)時的淘寶商城(天貓的前身)舉辦了首屆網(wǎng)絡(luò)促銷活動,當(dāng)天銷售額為0.5億元;2017年的雙11,天貓、淘寶總成交額1682億元,創(chuàng)造了25.6萬筆/秒的新支付峰值,數(shù)據(jù)庫處理峰值達4200萬次/秒。2017雙11開始后的7分23秒,支付寶的支付筆數(shù)突破1億筆,相當(dāng)于5年前雙11全天支付總筆數(shù)!
對于阿里來說,每年的雙11就是一個超級工程,而下一年的雙11又會突破前一年的紀(jì)錄,因此雙11其實是一個不停“膨脹”的無限工程。支撐雙11的核心數(shù)據(jù)庫,就是自2010年開始立項的金融級分布式數(shù)據(jù)庫OceanBase。
OceanBase的目標(biāo)是成為新一代商用關(guān)系型數(shù)據(jù)庫,其差異化優(yōu)勢在于底層的分布式技術(shù)。此前的OceanBase 1.0成功支持了2017年雙11的支付峰值,如今OceanBase 2.0已正式上線,迎接即將到來的2018支付新峰值。
OceanBase 2.0有何新功能?對1.0版本進行了哪些優(yōu)化?能否支撐今后雙11的無限擴展? OceanBase團隊的兩位專家楊傳輝和韓富晟解讀了2.0版本的特點,兩位專家均強調(diào)OceanBase 2.0的設(shè)計可支撐百萬支付峰值甚至無上限,2018年還將在不增加服務(wù)器的基礎(chǔ)上“頂住”新的峰值。此外,在完全兼容MySQL后,OceanBase 2.0加強了對Oracle數(shù)據(jù)庫的兼容。OceanBase還在以極致精神打磨軟件,挑戰(zhàn)世界級基礎(chǔ)軟件。
進一步提升分布式架構(gòu)
今年以來,國內(nèi)云服務(wù)商陸續(xù)推出了各自的分布式數(shù)據(jù)庫,楊傳輝強調(diào)OceanBase是唯一一個走通用數(shù)據(jù)庫路線的產(chǎn)品,其特色在于分布式架構(gòu)對用戶透明,不需要修改業(yè)務(wù)。OceanBase的技術(shù)定位為通用的金融級分布式商業(yè)數(shù)據(jù)庫,從支持金融行業(yè)起步,再逐步拓展到支持各個行業(yè)。
螞蟻金服研究員 楊傳輝
相對1.0版本而言,OceanBase2.0在分布式架構(gòu)方面更上一層樓。OceanBase 1.0已經(jīng)實現(xiàn)了用戶對機器故障的無感知,也就是多臺機器部署數(shù)據(jù)庫,無論哪臺機器宕機都可以30秒內(nèi)無損切換,即所謂高可用。OceanBase 2.0進一步實現(xiàn)了多臺機器部署數(shù)據(jù)庫的時候,用戶對數(shù)據(jù)分布的無感知,這就是數(shù)據(jù)庫層面的自動分片和自動負載均衡。OceanBase 2.0支持在線數(shù)據(jù)分片,當(dāng)某個數(shù)據(jù)分片數(shù)據(jù)量或者訪問量太大時,在線分裂成多個分片,整個過程對服務(wù)沒有任何影響。
分布式數(shù)據(jù)庫的數(shù)據(jù)分片,即把數(shù)據(jù)集切分成若干子集再分布到不同機器上,達到分布均勻、負載均衡、擴縮容時數(shù)據(jù)遷移少等目的。楊傳輝強調(diào),一臺服務(wù)器上的數(shù)據(jù)分片數(shù)量,說明了數(shù)據(jù)庫底層的技術(shù)能力,因為分片越多則意味著系統(tǒng)開銷越大,數(shù)據(jù)分片要能做到足夠小,才能實現(xiàn)整個集群負載的精細化控制和快速數(shù)據(jù)恢復(fù)。外界基于MySQL方案的分片數(shù)能達到單機幾十個,而OceanBase 2.0則可支持的單機分片數(shù)達到10萬到100萬個,從而實現(xiàn)了無限的可擴展能力。
在實現(xiàn)用戶對機器故障無感知和數(shù)據(jù)分布無感知后,OceanBase 2.0還對分布式事務(wù)進行了改進。OceanBase 1.0已經(jīng)支持了分布式事務(wù),2.0版本則進一步實現(xiàn)了全局快照和全局索引。所謂全局快照,即當(dāng)一條SQL語句涉及到多臺機器時,通過全局快照保證各臺機器的強一致讀取。在全局快照讀的基礎(chǔ)上,OceanBase2.0實現(xiàn)了全局索引,就真正做到了用戶對多機環(huán)境的無感知。此外,由于出現(xiàn)了全局快照,為了提高局部的租戶級數(shù)據(jù)一致性,OceanBase 2.0在全局時鐘的基礎(chǔ)上又引入了租戶級時鐘,從而保證單個租戶的數(shù)據(jù)一致性,而無須頻繁引用全局時鐘,這樣就避免了全局時鐘成為整個系統(tǒng)的瓶頸。
強化對Oracle數(shù)據(jù)庫的兼容
除了日益強大的分布式架構(gòu),OceanBase 2.0相比OceanBase 1.0在功能上最大的亮點是為用戶提供了一個全新的Oracle兼容模式。眾所周知,MySQL是互聯(lián)網(wǎng)場景中最為流行的數(shù)據(jù)庫,但從市場規(guī)模、功能完備等方面看,Oracle依然是商業(yè)數(shù)據(jù)庫的絕對領(lǐng)導(dǎo)者。OceanBase的Oracle兼容模式使得傳統(tǒng)企業(yè)的應(yīng)用可以平滑遷移到OceanBase,在不改變業(yè)務(wù)代碼的前提下充分享受分布式數(shù)據(jù)庫在擴展性、可用性和系統(tǒng)成本等各個方面帶來的收益。
從MySQL到Oracle的兼容,不僅僅是SQL語法、數(shù)據(jù)類型、功能等方面的改變,更重要的是從專用數(shù)據(jù)庫到商用數(shù)據(jù)庫的全面功能升級,而這一切都是基于OceanBase對于自有內(nèi)核的全面掌握。 例如,遷移傳統(tǒng)數(shù)據(jù)庫應(yīng)用中,存儲過程的支持是繞不過去的一道難題。OceanBase 2.0在兼容Oracle存儲過程各種復(fù)雜、靈活的語法與功能的同時,還進一步通過編譯執(zhí)行(Just-in-Time Compilation)等技術(shù),大大提升了其執(zhí)行效率和具體場景中的實用性。與此同時,OceanBase 2.0還提供自定義函數(shù)、窗口函數(shù)、層次查詢、dblink、臨時表、sequence等一系列豐富的數(shù)據(jù)庫功能。
Oracle兼容模式的另外一個體現(xiàn)是數(shù)據(jù)庫內(nèi)核能力方面的增強。例如,為了更好的處理復(fù)雜查詢的處理能力,OceanBase 2.0全面升級了分布式查詢的優(yōu)化和執(zhí)行引擎,增強了對復(fù)雜業(yè)務(wù)的支持能力;為了實現(xiàn)更精確的查詢優(yōu)化,OceanBase 2.0實現(xiàn)了直方圖以及實時統(tǒng)計信息更新的機制;同時, OceanBase2.0實現(xiàn)了基于用戶參數(shù)的計劃選擇機制,增強了系統(tǒng)對大小查詢混合場景的支持。諸如此類,OceanBase 2.0在SQL引擎中引入了大大小小數(shù)十種內(nèi)核優(yōu)化手段,向成熟的商用數(shù)據(jù)庫又邁進了一大步。
數(shù)據(jù)庫應(yīng)用與數(shù)據(jù)的平滑遷移是升級過程中的重要考慮因素。OceanBase 2.0數(shù)據(jù)遷移平臺支持Oracle業(yè)務(wù)到OceanBase 2.0的一鍵平滑遷移,為用戶系統(tǒng)的升級鋪平了道路。
OceanBase 2.0剛剛轉(zhuǎn)向Oracle兼容,任重而道遠。楊傳輝表示,相信隨著整個團隊的不斷努力,OceanBase會持續(xù)降低用戶使用數(shù)據(jù)庫的門檻,實現(xiàn)對用戶生產(chǎn)力的充分解放與賦能。
挑戰(zhàn)百萬支付新峰值
2017年雙11的支付峰值為25.6萬筆/秒,那么2018年及以后的支付峰值目標(biāo)就上看百萬筆/秒甚至更高。這么高的目標(biāo)能否實現(xiàn)?這就是OceanBase 2.0問世的目的:今年雙11交易支付,全部升級到OceanBase 2.0,從而挑戰(zhàn)百萬支付新峰值。
在支撐更高的支付峰值方面,OceanBase 1.0已經(jīng)無法對數(shù)據(jù)進一步的拆分而不影響上層的業(yè)務(wù),OceanBase 2.0的目標(biāo)就是在用戶無感知的前提下可以把數(shù)據(jù)拆分到無限多的機器里,無需上層的業(yè)務(wù)改造就可以支撐百萬甚至更高的支付峰值。
OceanBase作為基礎(chǔ)軟件,是整個支付業(yè)務(wù)性能的基石。OceanBase一直以來也把性能作為核心功能對待,一直為業(yè)務(wù)提供性價比最高的數(shù)據(jù)庫服務(wù)。OceanBase 2.0版本繼續(xù)發(fā)力,在性能上獲得了跨越式提升,在線事務(wù)處理能力(也就是處理OLTP類型業(yè)務(wù)的能力)提升了50%,為完成2018年雙11不添加一臺服務(wù)器支持新的業(yè)務(wù)峰值的目標(biāo)提供了堅實的基礎(chǔ)。
負責(zé)性能優(yōu)化工作的韓富晟具體介紹了OceanBase 2.0的各項改進。OceanBase 2.0主要從三個層面下了大功夫。第一,是數(shù)據(jù)庫架構(gòu)層面的革新;第二,是系統(tǒng)實現(xiàn)層面的精雕細琢;第三,是數(shù)據(jù)庫運行環(huán)境的整體調(diào)優(yōu)。
螞蟻金服資深技術(shù)專家 韓富晟
OceanBase 2.0對事務(wù)提交流程進行了大重構(gòu),大幅度減少事務(wù)提交流程的開銷。支付業(yè)務(wù)是典型的在線事務(wù)處理類,以短小事務(wù)為主,事務(wù)的提交執(zhí)行的頻率特別高。事務(wù)的提交也通常是數(shù)據(jù)庫內(nèi)部最耗時的一部分。OceanBase 2.0打通日志服務(wù)與事務(wù)服務(wù),將原先分布式事務(wù)兩階段提交的多條日志優(yōu)化到每個分區(qū)只有一條日志,依然保證很好的支持事務(wù)的原子性和一致性的功能。日志條目數(shù)的減少簡化了提交流程,不僅提升了系統(tǒng)處理能力,還顯著減少了事務(wù)提交的耗時。
OceanBase 2.0還在哪些地方精打細算了呢?實際上,OceanBase 2.0的整個請求處理路徑都進行了細致的優(yōu)化。以內(nèi)存分配器為例,OceanBase數(shù)據(jù)寫入Memtable過程中,會在數(shù)據(jù)存儲和索引更新過程多次分配內(nèi)存,內(nèi)存分配器很容易成為系統(tǒng)的瓶頸。通常解決這個問題的方法是讓分配器預(yù)分配很多內(nèi)存,但是在OceanBase分布式多分區(qū)的架構(gòu)下,給大量空閑分區(qū)預(yù)分配意味著大量閑置的內(nèi)存無法有效利用。OceanBase 2.0啟用了自適應(yīng)的內(nèi)存分配器算法,只對寫入量大的分區(qū)進行內(nèi)存的預(yù)分配,有效平衡了空間占用和系統(tǒng)性能。
數(shù)據(jù)庫一般都是操作系統(tǒng)壓力最大的進程,也經(jīng)常觸碰操作系統(tǒng)的各種極限。OceanBase2.0在實際生產(chǎn)環(huán)境大壓力運行時,我們還發(fā)現(xiàn)了Linux內(nèi)核的bug。這個bug從3.1版本內(nèi)核開始出現(xiàn),目前3.1也是業(yè)界在生產(chǎn)環(huán)境普遍使用的一個版本。在內(nèi)核專家的支持下,我們發(fā)現(xiàn)了Linux調(diào)度系統(tǒng)的缺陷,這個缺陷使得 CPU無法充分利用。僅解決此bug一項,就給系統(tǒng)帶來了7%的性能提升。
為什么OceanBase要這么細摳系統(tǒng)性能呢?這是因為做軟件有兩大代價要應(yīng)對,一個是開發(fā)代價,一個是運行代價,有些系統(tǒng)很側(cè)重開發(fā)代價,特別是變化頻繁的業(yè)務(wù)系統(tǒng),好的開發(fā)效率是系統(tǒng)迭代的關(guān)鍵。但是數(shù)據(jù)庫這樣的底層系統(tǒng)在關(guān)注開發(fā)效率的同時,更關(guān)注運行代價或者說是運行效率,為什么要關(guān)注運行效率?對于一個商業(yè)數(shù)據(jù)庫來說,運行在成千上萬臺機器上,點滴運行效率的提升可以帶來計算資源的大量節(jié)省,比如OceanBase 2.0對于在線處理業(yè)務(wù)50%的性能提升,如果原先是1萬臺機器上運行的話,通過性能提升就能節(jié)約出三分之一的機器。“越基礎(chǔ)的軟件性能越關(guān)鍵,一個微小的改變就會為業(yè)務(wù)節(jié)省大量的資源,持續(xù)的系統(tǒng)優(yōu)化是必須要做的事情。”韓富晟表示。
安全、升級與遷移
OceanBase 2.0還在更多方面進行了優(yōu)化,這些包括數(shù)據(jù)安全與質(zhì)量、軟件系統(tǒng)與遷移等方面的優(yōu)化。
在數(shù)據(jù)安全方面,OceanBase 2.0實現(xiàn)了商業(yè)數(shù)據(jù)庫一個重要功能,即數(shù)據(jù)閃回(Flashback)。數(shù)據(jù)閃回之所以特別有用,在于一旦發(fā)現(xiàn)操作有誤,可以閃回到一段時間之前的數(shù)據(jù)狀態(tài)。OceanBase 2.0支持?jǐn)?shù)據(jù)的多版本存儲,即把內(nèi)存中的數(shù)據(jù)存儲到磁盤時,會把并發(fā)的多版本以及歷史版本信息等根據(jù)用戶需求存儲到磁盤里。
如何實現(xiàn)OceanBase 1.0到2.0的平滑過渡?一方面,為了保障業(yè)務(wù)的平穩(wěn)過渡,OceanBase提供了灰度切換和業(yè)務(wù)雙寫,灰度切換指的是數(shù)據(jù)流量按一定百分比逐步切換到新系統(tǒng)中,一旦出現(xiàn)問題即可回滾。而業(yè)務(wù)雙寫,即業(yè)務(wù)系統(tǒng)同時使用1.0和2.0兩個版本,兩套數(shù)據(jù)庫并行工作以及進行數(shù)據(jù)對比,在運行很長一段時間后確保切換沒有問題,再一點一點按比例切換,切換的過程中仍然使用灰度控制,這樣就保證了從1.0到2.0的平滑升級。
兼容性也是OceanBase團隊提供的1.0到2.0版本升級中的重要保障機制。OceanBase支持1.0版本與2.0版本同時運行在一個業(yè)務(wù)下,“在一個集群里,兩個大版本的數(shù)據(jù)庫同時運行,技術(shù)難度非常大”,楊傳輝強調(diào)。首先是不同版本數(shù)據(jù)庫之間的協(xié)議兼容,也就是當(dāng)1.0版本給2.0版本發(fā)1.0的協(xié)議以及2.0版本給1.0版本發(fā)2.0的協(xié)議,二者之間都能兼容。此外,在數(shù)據(jù)格式方面,由于2.0版本對底層進行了比較大的改造,因此2.0在兼容1.0的數(shù)據(jù)格式方面也做了細致的工作。而更難的是功能兼容,在2.0版本中對不少功能都進行了較大的改動,因此每一個被改動功能的兼容性都需要逐一處理。
在遷移工具方面,OceanBase支持阿里巴巴和螞蟻金服體系內(nèi)的數(shù)據(jù)遷移工具,例如阿里云平臺上的數(shù)據(jù)傳輸服務(wù)DTS。在螞蟻金服內(nèi)部開發(fā)了MySQL到OceanBase一鍵遷移平臺,業(yè)務(wù)不需要修改一行代碼,就可以將原來使用的MySQL切換為OceanBase。
OceanBase 2.0還在其它方面進行了更多的優(yōu)化。在底層優(yōu)化方面,OceanBase 2.0將實現(xiàn)存儲和計算的分離,這相當(dāng)于在數(shù)據(jù)庫底層形成了一個分布式存儲系統(tǒng)。在自治數(shù)據(jù)庫方面,OceanBase整個的產(chǎn)品愿景一直在朝這個方向發(fā)展,盡可能減少人工干預(yù)。
OceanBase 2.0的正式對外發(fā)布,代表了OceanBase產(chǎn)品化的又一個新里程碑,也是OceanBase在走向商業(yè)數(shù)據(jù)庫產(chǎn)品之路上的一個重要節(jié)點。OceanBase的持續(xù)開發(fā)和優(yōu)化過程,反應(yīng)了中國基礎(chǔ)軟件在基于云計算的分布式計算時代的新機遇,盡管要重走一遍傳統(tǒng)IOE軟件曾經(jīng)走過的基礎(chǔ)軟件優(yōu)化道路,但基于云計算的分布式環(huán)境給了中國基礎(chǔ)軟件一個劃時代的機遇,抓住這個機遇就有可能成就來自中國的世界級基礎(chǔ)軟件,OceanBase也有機會站在世界軟件之巔!
- 美國華盛頓特區(qū)撞機事故調(diào)查揭新篇章:數(shù)據(jù)揭示真相
- 騰訊云NodeJS SDK打包體積過大引發(fā)熱議,官方致歉并承諾后續(xù)優(yōu)化
- 2025春節(jié)檔大戰(zhàn):票房破60億,電影市場再創(chuàng)輝煌
- 揭秘周鴻祎:DeepSeek 如何打破開源壁壘,引領(lǐng)真正的Open AI革命?
- Anthropic引領(lǐng)Claude AI新紀(jì)元:雙向語音模式開啟,對話更人性化
- Meta首席科學(xué)家楊立昆揭露硅谷病態(tài)優(yōu)越感:別讓自以為是阻礙進步
- 小米SU7交付破萬創(chuàng)新紀(jì)錄,連續(xù)四個月銷量飆升,實力引領(lǐng)市場
- 春節(jié)潮汕小城爆滿,年輕人‘爆改’春節(jié)去南方小城過大年,美團旅行:假期前三日訂單增長51%
- 2023年合資燃油車與新能源車型大PK:誰更勝一籌?
- 機械舞步的機器人引熱議,9.9萬買個機械奶奶靠譜嗎?
免責(zé)聲明:本網(wǎng)站內(nèi)容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請進一步核實,并對任何自主決定的行為負責(zé)。本網(wǎng)站對有關(guān)資料所引致的錯誤、不確或遺漏,概不負任何法律責(zé)任。任何單位或個人認(rèn)為本網(wǎng)站中的網(wǎng)頁或鏈接內(nèi)容可能涉嫌侵犯其知識產(chǎn)權(quán)或存在不實內(nèi)容時,應(yīng)及時向本網(wǎng)站提出書面權(quán)利通知或不實情況說明,并提供身份證明、權(quán)屬證明及詳細侵權(quán)或不實情況證明。本網(wǎng)站在收到上述法律文件后,將會依法盡快聯(lián)系相關(guān)文章源頭核實,溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。