數據庫系統不僅保存了現代企業的關鍵業務數據,而且對這些數據提供訪問從而支撐著企業業務。因此,數據庫系統的穩定可靠對現代企業至關重要。 數據庫系統通常由數據庫軟件、運行數據庫軟件的數據庫服務器硬件以及保存數據庫數據的數據庫存儲硬件(即共享存儲)
數據庫系統不僅保存了現代企業的關鍵業務數據,而且對這些數據提供訪問從而支撐著企業業務。因此,數據庫系統的穩定可靠對現代企業至關重要。
數據庫系統通常由數據庫軟件、運行數據庫軟件的數據庫服務器硬件以及保存數據庫數據的數據庫存儲硬件(即共享存儲)組成,如下圖所示:
數據庫系統的穩定可靠,也取決于這三個部分。
首先是數據庫軟件,數據庫軟件廠商平均2~3年發布一個大版本,新版本發布前會進行反復測試。即使如此,數據庫軟件的維護升級依然有很大的風險,2013年6月中國工商銀行系統不可用即是其數據庫DB2的維護升級導致,2014年8月美國國務院簽證數據庫系統超過1周的不可用也是其數據庫Oracle的維護升級導致。
其次是數據庫服務器。為了保障數據庫系統的穩定可靠,傳統數據庫系統廠商推薦用戶使用穩定性較高的高端服務器,這些服務器價格非常昂貴,難以擴展,并且擴展能力也十分有限。
第三是數據庫存儲(共享存儲)。數據庫中的數據是企業最寶貴的財富,為了避免數據丟失,傳統數據庫廠商推薦用戶使用穩定性較高的共享存儲,同樣地,這類存儲設備價格非常昂貴,難以擴展,并且擴展能力也有限。
為了避免水災、火災或者其他自然災害導致的數據庫系統不可用甚至數據丟失,傳統數據庫系統通常還要搭建備庫,出于安全考慮,主庫與備庫需要保持一定的距離,例如50km或以上,俗稱主備鏡像,如下圖所示:
然而,盡管稱為主備鏡像,數據庫的備庫并不能保證與主庫一致:假如強制要求兩者一致,那么主庫的每一筆事務都必須到達備庫后才能提交和應答客戶,這樣一旦主庫備庫之間的網絡異常或者備庫異常,整個數據庫系統將不可用,從而導致業務的中斷,與主庫備庫部分數據不一致相比,業務的中斷對于企業來講更加不能接受,因而主庫故障后業務切換到備庫時,通常會有少量數據不一致。因此,即使部署了主備鏡像,傳統數據庫系統也不得不使用可靠性盡可能高的服務器和存儲,以降低主庫故障的幾率,減少對業務的影響。之所以要使用可靠的服務器和可靠的存儲,本質上是因為傳統數據庫假設硬件(服務器、存儲、網絡等)是“可靠的”。
對于數據庫,與傳統企業相比,互聯網企業最大的不同之一是并發訪問量非常大。傳統商業企業、銀行,用戶需要通過收銀臺、銀行終端、ATM柜員機、POS機等專用設備開展業務并訪問數據庫,幾百和幾千的數據庫并發訪問比較常見,幾萬以上的并發訪問相當少見。在互聯網上,每一個草根網民都可以發起購物交易并訪問數據庫,幾十萬的數據庫并發訪問時常可見,幾百萬甚至千萬的并發訪問都可以見到(例如雙11下的淘寶、天貓和支付寶)。如此之大的并發訪問下,商業數據庫軟件及其高可靠的數據庫服務器和共享存儲的成本成為了不可承擔之重。
由于上述原因,OceanBase的一個基本假設就是硬件(服務器、存儲、網絡等)是不可靠的,另一個基本假設是單機(數據庫服務器及共享存儲)無法滿足互聯網業務的需求。因此,OceanBase必須是一個多機(分布式)系統,并且必須保證任何時刻出現的少量硬件(服務器、存儲、網絡等)異常不影響業務。
為此,OceanBase引入了Paxos協議,每一筆事務,主庫執行完成后,要同步到半數以上庫(包括主庫自身),例如3個庫中的2個庫,或者5個庫中的3個庫,事務才成功。這樣,少數庫(例如3個庫中的1個庫,或者5個庫中的2個庫)異常后業務并不受影響:
與傳統數據庫相比,OceanBase的另外一個關鍵特征是軟件版本的灰度升級。主備方式的傳統數據庫是“單活”的,只有主庫可執行寫事務,盡管維護升級時可以先操作備庫,操作完成后備庫變成主庫并且接受用戶訪問是一步到位的,如果新版本有問題,則業務受到影響:
傳統數據庫:升級前
傳統數據庫:升級中
傳統數據庫:升級后只能一次性地引入全部讀寫流量
OceanBase則是“多活”設計,即多個庫(3個,5個等)每個都可以有部分讀寫流量,升級時先把要升級的庫的讀寫流量切走,升級后先進行數據對比,正常后逐步引入讀寫流量(白名單,1%,5%,10%......),一切正常并運行一段時間后再升級其他的庫:
OceanBase之3機群(3庫)部署:升級前
OceanBase之3機群(3庫)部署:切走讀寫流量,準備升級
OceanBase之3機群(3庫)部署:升級一個機群(庫)
OceanBase之3機群(3庫)部署:升級一個機群(庫)后切回部分讀寫流量
OceanBase之3機群(3庫)部署:升級一個機群(庫)后切回全部讀寫流量
基于硬件不可靠的假設并且能夠容忍少量服務器的故障,OceanBase使用了相對廉價的PC服務器代替高可靠服務器并且不再使用昂貴的共享存儲,從而不僅提供了比使用高可靠服務器和共享存儲低得多的成本,容忍少數服務器乃至少數機群故障意味著比傳統數據庫更高的可靠性。通過灰度升級,OceanBase避免了傳統數據庫的“一錘子買賣”的升級,極大地降低了數據庫維護升級的風險。
本文作者:陽振坤,螞蟻金服高級研究員。
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com