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