螞蟻金服資深總監韓鴻源:企業級數據庫平臺的持續與創新

2019年11月19日,螞蟻金服在北京舉辦「巔峯洞見·聚焦金融新技術」發佈會,介紹2019雙11支付寶背後的技術,並重磅發佈全新OceanBase 2.2版本和SOFAStack雙模微服務平臺。咱們將系列演講整理併發布在  「螞蟻金服科技」 公衆號上,歡迎關注。

螞蟻金服研究員韓鴻源在發佈會分享了《企業級數據庫平臺的持續與創新》,如下爲演講實錄:前端

e5281166-4f41-4caa-929c-44d709e12874.jpeg

在今天企業級的市場裏,數據庫是根本的基礎支持能力之一,傳統數據庫技術正在面臨各類各樣全新的挑戰,面對這些挑戰的時候你們都在尋找一些新的解決方案。這些新的解決方案從什麼地方來呢?當我想要替換很是成熟的被你們普遍使用的平臺的時候,怎樣讓客戶放心的去替換?在企業級數據庫基礎平臺上,後續可能會是什麼樣的發展方向?這也是我今天想和你們探討的內容。數據庫

e1e238f6-2b1d-403c-a6d4-62ab4b41d775.jpeg

關係數據庫已經發展不少年,今天全部企業裏面的業務系統,支撐核心的業務系統大部分都跑在關係數據庫上面。原來傳統企業裏的業務系統接入終端數量頗有限,無論是本身內部業務系統,仍是對客戶前端櫃檯作業務系統,終端數量都很是有限。基本上,系統的擴展能力能夠經過數據庫服務器的垂直擴展均可以知足要求。安全

隨着移動互聯網發展,今天的業務系統無論是銀行、政府等,已經普遍暴露在大部分移動接入的客戶面前。當這種狀況出現時發現很大的變化,傳統的系統垂直擴展是不可能解決這個問題。那麼如何解決呢?這就衍生出不少不一樣的解決辦法。除了傳統的關係數據庫持久化處理數據方式以外,演化出很是多的新的數據方式,所謂多態數據持久化等方式不斷冒出來。服務器

666b16e5-4ca5-42b0-b0cb-2bb4fb86e187.jpeg

當全部這些東西來了以後,你們發現回到真正的業務邏輯上去看,關係數據庫有它很突出的長處,它能夠以一個數學上完善的方式幫助客戶有效的構建業務系統,這些能力當你去放鬆對關係的嚴格要求以後,不少東西很難知足。包括客戶已經有的業務系統,怎麼樣持續運營下去?怎麼樣保證客戶已經有的這些嚴謹業務邏輯持續運營下去?因此帶來不少新的挑戰。架構

傳統的企業客戶不僅是商業企業,泛指企事業單位和黨政軍範圍,通常指具備必定規模且有重要性的實體。那麼,對企業級系統和平臺的要求也包括不少:1)高安全;2)高性能;3)高可靠性;4)高可用性;5)高開發效率,低維護成本;6)高可擴展性。這些對企業來說都是很核心的東西。併發

be276202-8900-420b-9741-b715f4da3b6f.png

上圖底下是一個橫軸線,從2013年-2019年排在最前面幾個數據庫的活躍程度很是穩定。今天去看前三個最活躍的數據庫依然仍是關係數據庫,關係數據庫仍是今天整個企業數據管理平臺的主流,不可是主流,並且支持全部主要的業務系統。oracle

主流關係數據庫相對穩定,這些數據庫受到不少的開源的衝擊。對於絕大部分企業來說不是作開發和軟件的,須要是平臺具有的這些能力,你要高可靠、高可用,可以幫助用戶持續發展。只要這個產品足夠可靠好用的狀況下,客戶能夠本身把運維接起來的狀況下,是沒有必要看源代碼的。今天咱們談企業級的時候,可能看的更多的是怎麼樣支持客戶有效運營本身的業務。app

d1f5b08c-02ea-429c-8c26-f076a08ff928.png

上圖是數據庫的發展歷史。最先有層次數據庫、網狀數據庫等,當關係數據庫出現以後,因爲它們突出的特色,基本上主要的業務系統都遷移到關係數據庫開發模式中去。從我我的來看,我經歷大概20多年的歷史,關係數據庫是全部數據庫裏被判死刑次數最多的一個技術,到今天爲止不但沒有死,並且還在不停的煥發新活力。運維

RDBMS 真正的價值如何體現?我以爲,首先數據庫裏面強調的ACID幫助應用開發,簡化了應用開發複雜性;第二點,SQL這個寫法很關鍵,接近於天然語義的寫法,最大優勢作業務開發的人寫出來的代碼可讓作業務人看得懂,帶來的好處是你們溝通很方便,寫出來的代碼可讀性可維護性很是強,因此擺脫這些技術是很困難的。可是關係數據庫不是一成不變的東西,從集中式到分佈式是一個大的發展方向,不少時候這些東西爲了突破原來的限制和技術瓶頸。分佈式

互聯網與互聯網公司帶來的變化是,用戶訪問量變化,以及不少新技術的探索和創新。最先互聯網公司裏有至關多互聯網公司作的業務跟傳統企業業務有很是大的差別。當你作這些業務的時候,有些業務是有標準答案,有些業務沒有標準答案。當你在網上作搜索的時候,你搜以前確定不知道搜索結果是什麼?當你轉一筆賬的時候,你轉以前必定知道轉賬結果是什麼。這兩件事對於數據庫平臺的支撐能力有徹底不同的要求。互聯網公司面臨壓力大了以後,須要系統有很是強的可維護性的要求,不少東西是自動的維護和自動高可用的管理,這一塊是一個很大技術變化的出發點。好比說高可用,傳統企業的高可用基本靠半人工、半機器方式去作,基本不會徹底相信機器,本身把高可用作的很完善。

舉例來說,很是多的金融機構都作了容災系統,容災系統切換這種決策沒有人敢讓機器作自主決策。當你的規模很是大的時候,這種管理很難去作到,觸發怎麼樣實現自動高可用,真正讓系統具有完整的判斷能力。

當互聯網發展到金融這個領域時,剛纔我說的問題就很麻煩,不少用戶有不少的併發請求,作查詢不知道準確結果,作金融必定要知道準確結果,作錯任何一點用戶直接都會找你算賬。這個裏面須要很完備的基礎設施的支持,才能幫你支撐這麼好的金融業務。

85ec037d-8d35-44ca-bdb6-c4c17110ebfe.jpeg

下面,咱們但願跟你們探討一下,後續企業裏的數據庫技術會有什麼樣的發展趨勢?

首先,分佈式已是不可避免的潮流,這個裏面有幾方面的緣由。單一的大服務器加存儲的方式擴展能力有限,沒法支持企業的持續向前發展。在今天的雲環境裏面,你們能夠看一下市場上無論是哪一家主流的雲供應商,如今已經沒有任何一家雲供應商會讓你把服務器連到高端、高性能的存儲上去支持數據庫來運行。若是你想在雲環境裏運行數據庫,必然要選擇其餘的實現方式。因此你看在測試的時候,包括系統架構設計方面,其實是跟雲的大趨勢是一致的。今天,硬件發生了不少大的變化。像你們質疑咱們的TPC-C測試結果同樣,9年之前跟如今的硬件有很大差別。

若是我今天給你200臺服務器,裝一個數據庫上去,你根本裝不上去,更不要說運行結果出來,這不是那麼簡單的一件事,能有效地把這些新的硬件用起來對軟件是一個很是大的考驗。若是你們看還在使用中的絕大部分主流關係數據庫,它們有一個很大的特色,它們都設計在30年之前。30年之前設計數據庫的時候有兩個假設,全部硬件內存都是很小的,全部的存儲訪問速度都是很是慢的,全部的數據庫基本今天用的主要數據庫都是從那個年代發展起來的,這兩個限制條件給它加了不少枷鎖。

若是你們嘗試過可能會發現,我有一個oracle數據庫今天裝256個內存,明天擴512G,性能能提高多少?能提高一倍嗎?事實上能提高1%就不錯。什麼緣由?它的軟件架構設計決定它不能有效使用新的硬件能力,當今天不停的有新硬件技術出現的時候,須要新的方式把硬件能力用起來,帶給用戶更好的系統,帶給用戶更好的回報和更簡單的管理。

從雲發展趨勢來說,其實數據庫是最適合於雲化的服務。怎麼樣可以以雲化的方式有效的支撐客戶去使用數據庫也是一個很大的挑戰。

最後,管理的規模也很大,系統也很複雜,怎麼樣把更多的人工智能帶來的優勢體如今系統裏面去,幫助系統自動去運行,更好的自動去調優。這件事情今天提及來容易,最大挑戰是要有足夠大、足夠普遍的使用環境和使用場景,才能幫你積累到數據,才能算出你想要的模型來。

1a363ce4-0453-42b1-864f-577a3730ad1b.jpeg

那麼,新的企業級數據庫須要具有什麼能力呢?

首先,數據庫最好對硬件不要有特定的依賴,這樣會阻止往雲方向去發展和作優化。其次,今天全部的企業面臨一個發展方向,都是怎麼樣從傳統企業架構轉到雲原生架構,數據庫怎麼樣支持用戶轉換前和轉換後的平滑過渡。而後,在今天的企業環境裏面,不少負載的變化是突發的。你須要可以在保障數據的狀況下,在不一樣的運行環境實現靈活遷移。最後一點,數據庫是很是適合雲計算提供的服務,怎麼樣可以去真正把底層硬件能力發揮出來,好比在設計之初就要考慮多租戶的環境,怎麼樣在多租戶環境有效使用資源,支撐全部混合負載的能力。這些加在一塊兒其實是構建下一代數據庫平臺一些必須考慮的因素。

OceanBase對新技術的探索

回到OceanBase,咱們在這些方面作了不少探索。

cf5089df-08b4-4e6d-be48-a87001fde850.jpeg

首先是高可用性。在今天來說六級的高可用性已是很是高的可用性,絕大部分機構實現不了這個級別,可是咱們今天能實現遠遠超過這個級別,可以在30秒內實現自動恢復。這些靠的是在技術上怎麼樣把新技術有效用起來,好比說Paxos。在傳統數據庫裏不會有人去用它,在新的分佈式場景下來說,利用這些新的技術其實它還能幫你實現全自動的高可用。Paxos這種自動投票的機制帶來的優勢是系統在不須要在外部干預狀況下,把失效的東西替換掉以後持續去運行,在今天大規模運行環境裏面是不可或缺的一個東西。

9bfa9988-4d59-4249-96b8-0e1cdc6c1693.jpeg

剛纔講到,今天的互聯網帶來的壓力對於業務系統壓力變大很是多,靠一個數據庫一個系統支撐全部業務,必定不可能。在咱們系統運行環境裏,通過這麼多的實際環境輸入以後,今天能夠給用戶一個很靈活的選擇,可讓用戶去選擇數據庫的部署粒度,你能夠選擇分庫分表,也能夠選擇單庫。把選擇權給到用戶,用戶能夠根據本身的須要從不一樣的方式之間作過渡的融合,均可以幫助用戶持續往前發展。

78778d64-45ef-4145-9162-7eede464b3c3.jpeg

爲何要走向分佈式數據庫?傳統都是最左邊集中部署方式,它的優勢是ACID不用擔憂,缺點是想擴的時候擴不上去。爲了解決擴展的問題,你們纔來作分庫分表。分庫分表絕大多數狀況用中間件的方式來實現。這打破了數據庫的邊界,又同時引入了不少新問題。最大的問題是對應用不透明,若是你原來是一個複雜的業務應用,想適應分庫分表的時候,對應用的改造工做量很是大。

爲了解決這個問題,咱們作了原生的分佈式數據庫。最簡單的描述,你能夠把一個分佈式部署和運行的數據庫徹底當成一個集中的數據庫來用,對你來說不會有任何的差別。就像陽老師講的,TPC-C測的是一個系統的業務處理能力,對外表現來說TPC-C全部的檢查標準時,它跟單一的數據庫對外表現是同樣的。這在今天的分佈式數據庫裏是最難實現的一點,怎麼樣可以把一個分佈式的東西,表現給用戶用的時候是看成集中式來用,能力有提高,可是使用上不增長複雜性。

daa42584-43d0-44e6-902b-b4f443cce942.jpeg

咱們去看傳統數據庫的時候,每每強調是ACID屬性。若是隻爲了知足ACID,能夠很簡單的作到。由於數據庫能夠停。爲了保證ACID,咱們能夠在有異常狀況出現的時候,把整個系統停掉以後保證ACID不會出問題,可是用戶用不了系統。在今天,保證系統高可用的同時,高可用反過來能夠幫助ACID。

原來傳統系統裏使用兩階段提交時,最大問題不是兩階段帶來的系統消耗,是兩階段跨系統作交易的時候,一旦有一個參與者出現不可用,整個系統沒有辦法持續運行,狀態不可知的時候,沒有辦法保證系統一致性。剛纔講的自動30s以內的RTO的恢復會發生很大的做用。當整個系統全部的交易參與者能夠在很短的時間內恢復出來的時候,它是不會把業務掛起,能夠確保業務持續運行下去,消滅了傳統分佈式系統裏很是大的一個弱項。

今天整個市場上講,關係數據庫是一個全球範圍內早已經劃分完勢力範圍的市場。爲何今天還有新產品出現,是由於不少因素加進來以後,促成了不少新的變化。螞蟻內部有很是多的使用OceanBase的業務,這些業務經歷過去7、八年的發展,在這個過程當中OceanBase加強自身的能力,消除不少問題,在一個大規模的複雜環境裏面經歷這麼多年磨鍊以後,從2017年咱們走出來服務於外部用戶。

但願之後有更多的用戶給咱們機會去嘗試OceanBase,咱們也但願這個產品幫助你們解決不少現實中面臨的問題,也歡迎更多的企業和組織加入進來。

b3834134-fcd0-4e15-9cf1-69dd355978fb.jpeg

關於TPC-C,我想說,首先,TPC-C是目前國際上惟一具備公信力的數據庫功能與性能結合的公開檢測標準。由於全部市場上主流的玩家,原來都在這個標準上發佈過測試結果,即使這個測試模型源於20年前,可是全部結果都有意義。並且TPC-C的模型定義若是你們深刻研究的話,裏面有不少科學的東西。

第二點,TPC-C測試你們每每看到不少誤導性的信息,我在家裏跑一個結果,單機TPC-C能夠跑150萬,200萬,300萬,這件事情沒有意義,TPC-C測試裏面除了跑的性能指標以外,它有前提條件。TPC-C測試過程當中的ACID的檢查,對於分佈式數據庫是一個很是大的挑戰,今天絕大部分的分佈式數據庫面臨這個問題採起的是迴避的作法,不是直接解決問題的作法。測出來的結果不少不是有效的結果。咱們之因此參與TPC-C審計,是爲了證實咱們的分佈式系統是能夠像單機數據庫同樣一分鐘處理6000萬筆新的訂單。

第三點也就是在TPC 認證過的 TPC-C 結果裏面 OceanBase 取得的6千萬 tpmC 排名第一。

第四點,測試是基於公有云通用機型實現的,使用的是和生產系統一致的基礎環境。今天最大的變化是傳統企業數據庫往雲環境搬的時候,最大的變化是沒有可以匹配原來環境的那麼強大的服務器可用。沒有那麼大的服務器和存儲,怎麼樣解決這個問題?咱們給你們去作了這個證實,你能夠用軟件的能力實現一樣的性能指標。

最後,我不認爲TPC-C是證實數據庫完備性的充分條件,可是它是一個必要條件。當你要接的是這些大型機構核心業務系統時,若是你的數據庫沒有這種能力,確定不可能幫助客戶簡單的把應用遷移過來。

d22bd68f-349b-47db-be07-0f8c41f4415b.jpeg

今天,有些時候你們每每關注數據庫的一個點,可是整個對於企業來說走分佈式轉型這條路的時候,不可能只在數據庫一個點上面走。我想說的是,企業整個的分佈式轉型是須要從上到下,結合中間件和開發過程管理和系統保障管理全部體系加在一塊兒,纔可以確保有效的走向分佈式轉型,真正可以支撐你的業務持續往前發展。

OceanBase 是徹底自主研發的分佈式關係數據庫,咱們掌握全部的源代碼和系統的設計。在設計系統的時候沒有預設限制性條件,沒有對特定軟件的依賴,沒有對特定硬件的依賴,沒有對特定系統架構的依賴,這個時候我能夠很是普遍的去適配全部新出來的硬件系統和新的運行環境,能夠幫助咱們去探索更多的系統組合使用的空間。我以爲咱們最大的優勢是不存在對外部特定軟硬件系統及系統架構的鎖定性依賴。謝謝你們!

相關文章
相關標籤/搜索