如何避免 GitHub 那樣斷網 43 秒癱瘓 24 個小時?

螞蟻金服OceanBase資料庫團隊發表於2018-11-01
今日,GitHub技術負責人Jason Warner的一篇技術深度解析稿成為IT圈爆款。文中,Jason坦誠地對外講述了10月21日100G光纜裝置故障後,Github服務降級的應急過程以及反思總結。

從Jason Warner的文章中不難看出,造成斷網43秒癱瘓24小時的罪魁禍首是資料庫。由於部署在兩個資料中心的資料庫叢集沒有實時同步。意外發生時,Github的工程師擔心資料丟失,不敢快速將主資料庫安全切換到東海岸的備份資料中心。

如何避免 GitHub 那樣斷網 43 秒癱瘓 24 個小時?

程式設計師們在GitHub這篇“懺悔錄”下面留言,表達對資料庫叢集的“哀悼”。但更多IT從業者關心的問題是,如何避免這樣的災難事件降臨到自己的公司,自己維護的系統。

螞蟻金服OceanBase分散式資料庫專家認為,此次Github事件是典型的城市級故障如果系統採用的是高可用的三地五中心解決方案,就可以自如應對。

就在一個月前,今年的杭州雲棲大會上,螞蟻金服副CTO胡喜現場模擬剪斷支付寶近一半的伺服器光纜。只用了26秒,模擬環境中的支付寶就完全回覆了正常,這背後即是OceanBase城市級別故障的自愈能力

如何避免 GitHub 那樣斷網 43 秒癱瘓 24 個小時?

原來,Github類似銀行採用的傳統資料庫兩地三中心模式,即“主庫(主機房)+同城熱備庫(同城熱備機房)+異地災備庫(異地災備機房)”。這種方式下通常只有主機房的伺服器能提供寫服務。如果主城市出現城市級故障,災備城市的資料庫雖然可以工作,但由於沒有同步的最新資料,因此災備庫的資料是有損的。

但在三地五中心部署下,任何單個城市故障,OceanBase都不會停止服務,資料也不會有任何損失。

Github表示,為了保證資料完整性,他們不得不犧牲恢復時間。其實,這個問題採用三地五中心方案可以更好的應對。城市故障時,OceanBase只要活著的兩個城市的三個機房兩兩之間能夠通訊,就可以正常服務,也不會有任何的資料損失。

如何避免 GitHub 那樣斷網 43 秒癱瘓 24 個小時?


相關文章