支付寶秀秒級自愈力:自剪機房光纖26秒恢復
如果支付寶一半機房被切斷,你的花唄還用還嗎?
在9月20日的杭州雲棲大會ATEC主論壇上,螞蟻金服副CTO胡喜給出了這個問題的答案。
在雲棲大會現場,兩名支付寶工程師在胡喜的指揮下,同時剪斷了支付寶兩個模擬機房的網線。 系統顯示,僅在26秒後,執行在上面的支付寶虛擬賬戶便恢復了正常運轉。
據胡喜介紹,這段現場演示是由支付寶工程師策劃的一次特別技術演練。他們基於支付寶的真實架構系統,在兩個城市單獨搭建了模擬機房。在模擬兩處機房同時終止服務時,架構在模擬環境中的支付寶虛擬賬戶,僅經歷了26秒的短暫故障,便重回正常狀態——下個月的花唄,還是要還。
胡喜介紹稱, 即便是在真實環境下,如果支付寶部署在一個城市的兩個機房同時出問題,跑在這兩個機房上的支付寶賬戶也能在數分鐘內恢復正常。而在這背後,則是螞蟻金服“三地五中心”容災系統的功勞。
“三地五中心”是什麼?
眾所周知,一切網際網路服務存在的基礎,都離不開現實世界中的實體伺服器。從聊天到網購,從訂外賣到叫網約車,使用者的每一次操作,都需要經過伺服器的中轉。
因此,機房是否安全穩定,決定了網路服務是能否正常運轉。在歷史上,因為各種奇葩機房事故導致的系統宕機,屢見不鮮。
2013年7月,微信曾經出現長達7小時的宕機事件。微信官方事後確認,宕機原因繫上海某施工隊挖斷通訊光纜所致。自此之後,“藍翔挖掘機擊敗中國網際網路”,成為了很多網民調侃宕機事故的熱門梗。
同年8月,大洋彼岸的另一場宕機事故,則引發了更加可怕的後果。2013年8月16日,Google在全球範圍內發生了五分鐘的宕機——搜尋服務、YouTube、Gmail全部崩潰。事後,有第三方資料顯示,在這五分鐘時間內,全球網際網路流量雪崩了40%。
對於支付寶一類的國民級金融服務,宕機帶來的後果更是毀滅性的。如何保障整個系統在面臨“黑天鵝事件”時不會宕機,成為了螞蟻金服內許多技術人員的首要工作。
36氪獲悉, 自2017年起,螞蟻金服便開始為支付寶架構“三地五中心”的容災解決方案——即在三個城市,安置五個機房。一旦其中的一個甚至兩個機房發生故障,支付寶的底層資料庫系統,會自動將流量全部切換到正常的機房,保證系統穩定執行,且不丟失任何資料。
在金融行業,傳統的資料庫架構,大多基於“兩地三中心”模式——即在兩個城市,安置三個機房,其中同城兩個機房提供服務;第三個機房平時處於“休眠”狀態,只在前兩個機房出現問題時才會“臨時上崗”。
這就意味著,如果一座城市的兩家機房同時崩潰,系統在切換到第三個機房時需要一段等待時間。除此之外,機房切換前後的資料,也可能發生資料丟失。
顯然,“三地五中心”的模式,要比“兩地三中心”更加可靠。從概率角度看,一座城市兩家機房瞬間崩潰的可能性,與城市遭受重大自然災害的概率相當。而兩個城市多家機房同時崩潰,則差不多是兩個不同地方的人同時被隕石砸中的概率。
不止是“多了兩家機房”
胡喜在演講中強調,與傳統的“兩地三中心”方案相比,“三地五中心”並非是多了兩家機房這麼簡單。
在產品架構方面, “三地五中心”需要兩座城市的四個機房同時線上。每一筆交易都會至少在兩個城市的副本中進行同步,並將所有資料定期備份到第五機房。 這對於企業的分散式架構、資料庫、中介軟體及相關金融核心技術,都提出了巨大的挑戰。
以決定分散式資料庫效能指標的讀寫效能為例,資料中心的數量增多,各資料中心之間的物理位置變遠,都會導致整個分散式資料庫系統的讀寫效能下降。
36氪獲悉,支付寶“三地五中心”的架構,來自於螞蟻金服自研的分散式資料庫OceanBase。在這一體系下,五個資料中心都存有副本。副本之間基於Paxos協議保持資料一致性。個別機房發生故障,並不會導致資料丟失。
螞蟻金服資深技術專家楊冰解釋說,在OceanBase的支援下,儘管支付寶採用了五副本的執行模式,但讀取效能並未下降,寫入操作延遲也僅受到城市之間的距離影響,有所增加。
OceanBase專案上線於2010年,是一個由阿里內部團隊自行研發的資料庫系統。同年,阿里開始在自有體系內以OceanBase替換甲骨文的Oracle資料庫系統。2013年,淘寶全線切換為OceanBase系統。2014年後,支付寶的交易、支付、賬務系統,先後被切換為OceanBase資料庫。
阿里巴巴CTO王堅此前表示,Oracle資料庫基於傳統IT環境,對電商行業高併發、實時線上、大規模網路優化等環境適應有限。只有自研資料庫,才可以滿足阿里的運營需要。
OceanBase資料庫,讓阿里在應對雙11購物節活動,以及為支付寶架構“三地五中心”等複雜系統時,擁有了自己的武器。但自研資料庫並非易事。螞蟻金服向36氪表示, 目前OceanBase資料庫程式碼已達到百萬級別,是中國第一個具有自主智慧財產權的分散式關係資料庫。
2017年後,螞蟻金服宣佈了自己的開放戰略,將支付、理財、信用、口碑開店等諸多能力開放給合作伙伴。OceanBase也自此同步開放。2017年9月,OceanBase與南京銀行達成合作,將南京銀行的資料處理能力由10萬筆/日以下,提升到了100萬筆/日以上。
“我們的技術目標之一,就是保證金融級別的系統穩定和安全能力。” 螞蟻金服副CTO胡喜說道。