OceanBase:當金融擁抱科技
說到OceanBase,相信大家經常會聯想到的就是雙11。今天的雙11已經成為許多人每年的一個重要節日,對於OceanBase團隊來說,雙11更像是一場技術大考。2017年雙11,支付寶創造了25.6萬筆每秒支付峰值這樣一個新的業界紀錄,這個峰值對於資料庫來說,意味著每秒要同時運行4200萬條SQL,而這其中的每一條SQL,都完全運行於OceanBase之上。業務的快速發展總是能給產品技術創新帶來源源不斷的動力,雖然能夠親身參與並見證這樣一個新的業界紀錄的誕生令人激動與自豪,但我更想分享給大家的,是在支撐這樣一個極致的擴展性、性能和可靠性的關鍵場景的背後,OceanBase所呈現出的豐富的產品技術內涵。今天我們可以非常自信地說,OceanBase已經成為最先進的金融級資料庫。
螞蟻金服選擇發展OceanBase這樣的分散式資料庫有其深刻的戰略思考。過去的實踐告訴我們,傳統的集中式架構無法滿足一個快速發展的核心企業對於容災和容量方面的關鍵需求。我們相信可靠性更高、擴展性更好、成本更低的分散式架構會逐漸成為行業的主流,原生的分散式關係資料庫將在其中扮演基礎性角色。所謂原生,是指我們是真正在資料庫內核層面來解決掉資料庫本身的可靠性和擴展性問題。我們注意到業內目前還存在有一些基於單機資料庫和中間層的分散式解決方案,這些解決方案的本質,是將原本屬於資料庫應解決的問題向業務層上移,這樣的系統會面臨三個問題:一是如何減少對業務的侵入;二是如何避免資料庫功能的受限;三是如何解決跨庫的數據強一致問題。我們相信KV不應是分散式資料庫的全部,對於絕大多數客戶來說,使用功能高度集成、整體交付的通用關係型資料庫,仍然是實現更低整體擁有成本的最佳實踐。
OceanBase是分散式架構在資料庫的落地。分散式架構的基本特徵之一,是其能夠基於不可靠的硬體,來構造出滿足金融級更高可靠性及數據一致性要求的業務核心。而硬體的不可靠,是可以通過軟體的可靠性來彌補的,通過這幾年的業務實踐,螞蟻金服已經非常清晰地向業界證明了這一點。OceanBase實現高可靠的關鍵,是其基於Paxos分散式選舉協議的事務核心。傳統資料庫基於主備容災架構,發生故障時,系統要麼選擇停止服務,要麼選擇去容忍主備數據的不一致,對於關鍵業務來說,停服務是不可接受的,這就意味著在傳統資料庫的容災架構下,主備切換是要丟數據的。而Paxos協議是一種多數派協議,其技術本質,是少數服從多數的樸素的現代社會思維。打個比方,今天我們所有人來針對一項決議進行投票,那麼只要多數人選擇同意,這項決議就可以被通過,即使有少數人因為各種原因而缺席。所以在這種多數派協議下,任何少數成員的故障不會影響系統整體的可用性。通過Paxos核心協議,OceanBase可以實現單機/機房/城市級別的無損容災,同時通過完全自動的主備切換,我們可以實現故障恢復時間不超過30秒,這是OceanBase在多次真實故障中的實際表現。而今天傳統資料庫分鐘級的故障恢復能力,跨機房的有損容災,已經完全無法滿足目前許多高實時性的線下支付場景對於系統可用性的要求。
去年,螞蟻金服實現了基於OceanBase的三地五中心容災架構在核心業務的落地,這一架構意味著我們可以真正實現城市級無損容災,也就是即使一個城市完全不可用,系統在數據層面也不會丟失一行數據,同時可以繼續提供服務,而這將極大地簡化應用端的容災設計,同時大大提升運維同學的生活幸福感。而就在昨天上午,網商銀行正式升級至三地五中心雙活架構,並且使用了最新的日誌副本,這是OceanBase城市級容災能力在金融領域的又一個例證。今年我們還將實現更多業務基於三地五中心架構部署,通過這些業務的落地,螞蟻金服正在定義金融級高可用的新標準。
今天的OceanBase已經可以支持最多64個物理機房的跨地域部署,這使得單一資料庫集群的容量不再受到單個IDC、乃至單個城市的容量限制。基於OceanBase的擴展能力,今天我們已經可以非常方便地實現快速的水平擴展、一鍵擴容縮容、以及完全自動的負載均衡。同時結合螞蟻金服的單元化架構,今天我們可以實現在小時級別,將螞蟻金服的任何一個業務,從日常模式擴展至大促模式,而這是傳統的集中式架構完全無法實現的。我想特彆強調地是,今天OceanBase的擴展能力完全是基於資料庫內核的原生能力,也就是說,今天我們不管跨越多少個機房,跨越多少個城市,所有部署中涉及到的這些資料庫伺服器,都是一個完整的OceanBase集群的一部分,無論從應用視角,還是從運維視角來看,系統都是整體交付的,這是作為一個原生的分散式關係資料庫產品,我們一直努力追求的重要客戶價值:對業務透明。
我們前面已經談到,分散式架構基於普通PC伺服器來構建核心業務集群,當硬體不再需要為系統整體的可靠性托底時,相對於傳統集中式架構中廣泛使用的高端伺服器和高端存儲設備,普通PC伺服器在性價比方面呈現出數量級的壓倒性優勢。而OceanBase創新的存儲架構能夠將這一優勢推進到一個新的高度。傳統資料庫的存儲架構誕生並成熟於機械硬碟的統治時代,其基本特徵是數據分頁存儲、原地更新,這種存儲架構本質上是為了優化機械磁碟的IO而設計的。而OceanBase的存儲架構從一開始就是面向SSD固態盤設計的,這是在大容量內存和SSD固態盤日益普及,已經成為以螞蟻金服為代表的所有在線業務的標準配置的這一大背景下的自然產物。OceanBase存儲架構中特有的基線數據和增量數據分離的設計,使得系統能夠在運行中的大部分時候,提供基於內存的實時處理性能。我們知道一個基於內存優化的資料庫,和一個基於磁碟優化但是數據常駐於內存中的資料庫,由於軟體實現堆棧方面的差異,其在處理性能上也是完全不同的。我們在sysbench上的性能測試結果也非常清楚地證明了這一點。其中,OceanBase的寫性能遠遠領先於同類產品,據我們所知,OceanBase是目前全球首個基於普通PC伺服器,單機性能突破百萬TPS的資料庫。除了極致性能之外,新的存儲架構完全消除了數據的隨機寫,這使得OceanBase能夠更好地去適配企業級SSD固態硬碟中的中低端產品;而數據批量寫的特性又使得高效數據壓縮技術的引入成為可能,從而幫助OceanBase實現相同數據集下,比同類產品小得多的存儲空間佔用。通過這些技術,我們能夠在系統引入SSD存儲後,實現優異IO性能的同時,使整機成本得以大幅度降低。
OceanBase是一款自研資料庫,和其它所有自主研發的基礎類軟體產品一樣,生活並不是一件容易的事,除了產品研發之外,最困難的,莫過於你如何向你的客戶證明你的產品是可靠的,而要證明這一點,很多時候是需要你的產品能夠在具備足夠代表性的示範業務中持續應用,這在很多時候就形成了一種死循環。OceanBase能夠發展到今天,背後最重要的原因,是OceanBase成長於螞蟻金服這樣快速增長的互聯網金融企業當中,這樣的一個快速增長的企業,本身就為自研資料庫的發展提供了豐富的應用場景,其中還包括最為重要的金融核心場景。OceanBase這幾年在螞蟻金服的發展,就是不斷證明自己的過程,通過核心業務的持續應用,螞蟻金服幫助OcanBase渡過了對於一個自研基礎類軟體產品來說最為艱難的應用關。而螞蟻金服作為一個互聯網金融的標杆企業,也通過OceanBase的應用,於去年真正實現了所有核心業務100%去商業資料庫,我相信這對於整個金融行業來說,都是一個具有里程碑意義的事件。
今天的OceanBase已經成功支持了螞蟻金服、阿里巴巴集團數百個關鍵業務的運行,其中許多業務已經穩定運行了多年。從去年開始,我們也跟隨整個螞蟻金服金融科技開放的腳步,開始了賦能傳統金融的歷程。在整個賦能實踐過程中,我們非常慶幸OceanBase過去在螞蟻金服自有業務中的多年積累,幫助產品在核心穩定性方面有了值得信賴的基礎,避免了讓外部金融客戶成為我們的小白鼠。但同時我們也非常深刻地感受到,傳統金融在業務複雜性方面與我們的自有業務存在很大的差異,在功能體驗、運維保障等各個方面,都對產品成熟度提出了更高要求。
今天的OceanBase才剛剛開始商業化,和業內已經非常成熟的其它商業資料庫相比,OceanBase要走的路還很長。我們會繼續堅持自主研發的道路,正如過去七年我們一直在堅持的那樣,自主研發雖然投入巨大,但卻能一直幫助我們與業務一起快速成長,幫助螞蟻金服實現對核心資料庫的自主可控,最重要的,是幫助技術創新不再有天花板。我們正在研發下一代的OceanBase,新的OceanBase將在產品端全面對標商業資料庫。我們將通過在功能層面實現對商業資料庫的全面兼容來避免業務進行大的改造;我們將通過在優化器、分散式執行等方面的技術進步,來幫助產品去更好地應對基於OLTP/OLAP混合負載的複雜應用場景的挑戰;我們將通過對全局一致性快照的支持,來幫助業務像在單機環境中一樣去訪問分散式資料庫,不再有任何約束和限制,真正實現架構對業務透明;我們將持續提供產品更高的性能和更低的成本,讓優化永無止境。我們希望,通過我們在產品端的這些努力,能夠真正去幫助我們的客戶,幫助他們去全面降低從傳統的集中式架構,進化到分散式架構過程中所面臨的風險和成本,幫助他們像過去使用其它商業資料庫一樣,能夠繼續基於一個產品,一套知識體系,來構建滿足不同應用場景需求的核心業務集群,擁有較低的開發門檻和運維門檻,擁有更低的整體擁有成本。我們相信,包括分散式關係資料庫在內的整個金融級的分散式架構,將會成為金融科技時代下行業最重要的基礎設施,他們將無處不在。這種架構性能優異,易於擴展,簡單易用,同時穩如磐石。螞蟻金服的技術團隊將為此而不斷努力。
推薦閱讀:
※快速打造分散式深度學習訓練平台
※OceanBase知乎官方號開通了!
※論文筆記:[DSN 2002] Scalable Weakly-consistent Infection-style process group Membership protocol
※Elasticell和Jepsen測試
※集群資源調度系統設計架構總結