足球资料库数据/孙祥/nba五佳球/足球直播哪个平台好 - cctv5今日现场直播

首頁 > 知識庫 > 正文

《火星救援》中你應該知道的5個高可用系統故障恢復原則
2016-02-20 19:34:07   來源: Tim Yang 后端技術    評論:0 點擊:

大部分互聯網系統也面臨各種臨時突發的故障,技術負責人及相關工程師需要及時響應故障,采取合適的手段來解決問題。因此火星救援中體現的很多原則,做法和高可用系統故障恢復是同理。

《火星救援》是最近一部受到廣泛關注的片子,講述在一次人類登陸火星的任務中,宇航員馬克·沃特尼經歷了一場惡劣的風暴后,與他的機組成員失聯,所有人都認為他在這次任務中喪生。然而,馬克卻幸運地活了下來,然而他發現自己孤單地置身于異星球。面對貧乏的生命補給,馬克必須用他的聰明才智和頑強的精神存活下來,并如何尋求求救的故事。

大部分互聯網系統也面臨各種臨時突發的故障,技術負責人及相關工程師需要及時響應故障,采取合適的手段來解決問題。因此火星救援中體現的很多原則,做法和高可用系統故障恢復是同理。

1、故障信息的透明性原則

martian-1

在火星救援中,當NASA發現馬克還生存時候,NASA第一時間再次舉行了新聞發布會,向媒體及公眾進行了交代,包括后續大部分事件如文本聊天,也是通過媒體現場直播,這是信息透明的原則。但是里面只有一點,NASA將相關信息給宇宙飛船的成員隱瞞了很長一段時間,這個是信息不透明帶來后果的案例,后面面對公眾時也出現了尷尬、被動包括可能需要承擔職責的局面。

互聯網系統在故障發生時候,技術人員第一時間發現了故障,如果不能馬上排除,則需要考慮是否將問題上報、以及將信息公示給所有用戶。

給公司上級上報故障在某種程度會對技術團隊留下負面印象,給外界用戶公示故障會給產品帶來負面的印象及不信任。因此保證信息透明需要有一定勇氣。但反過來思考,故障已經成為事實,也已經對用戶使用系統造成影響,隱瞞問題會帶來更多及更大的問題。技術負責人主動承認問題發生,及時通報問題以便各部門采取合適的應對及支援手段,以便能合理利用更多的資源來更早的解決問題。及時公示問題給用戶(比如通過官方微博及官方網站),以便爭取用戶的理解及支持。

從長遠來看,所有故障都不是某個人及所在小組的責任,管理層很少會出現遷怒于人的可能,而更多的是去改進體系上及管理上的問題。因此公開故障可以幫助公司及團隊更好的、更透明的去認識問題,幫助技術團隊做出改進,以便將來從體系上規避類似問題。

2、故障突發性對應的解決時限性原則

martian-2

火星救援中幾個時間點都非常急迫。馬克在火星的食品非常有限,并且可能會隨時遇到不可預料的情況。尤其是當棲息艙爆炸后,全部種植的馬鈴薯死亡,且無法再次種植。瓦特尼只能倚靠之前收成的馬鈴薯生存下去,當時能讓他再多活200個火星日。但是發射宇宙飛船登陸火星是一件非常龐大的系統工程,需要做好長時間的準備及周密的測試,并且存在欲速不達的可能。因此火星項目負責人需要在有限的時間內做出最佳可行的方案選擇。

故障選擇也大多處于類似被動的局面,當故障發生時候,用戶訪問系統受到影響,需要在盡可能短的時間內恢復服務。但由于時間緊迫,負責人可能沒有足夠的時間來分析故障的根本原因,只能根據現象及已有經驗迅速做出判斷。而且根據故障問題的不同,一些恢復手段如數據重建可能需要較長的時間,一些方案可能會超過用戶容忍的極限,因此需要技術負責人在短時間內做出快速解決故障的選擇。

3、故障中解決方案的技術決定性原則

martian-3

火星救援中,有幾個場景體現了技術的決定作用。一個是中國的太陽神助推器,將宇宙飛船赫耳墨斯號推向火星,一個是航天動力學家里奇·布內爾的航行方案,可以看到,臨時的技術方法在救援中起了決定作用。

故障恢復時候也有這樣的情況,大家圍著主要負責人旁邊一籌莫展時候,突然角落里不起眼的程序員說找出了解決方法,然后非常及時的解決了問題。故障時候僅能看到現象,很多時候還沒來得及分析出根本的原因,因此技術負責人也很難當機立斷提出非常確認的方案來解決問題。熟悉體系的程序員這時候可以發揮自身的能動性,小范圍的去推測、嘗試及驗證,有有很大的機會更快的解決問題。一些故障拖很長時間,有一定程度是團隊成員沒有有效手段,另外一個原因也許是團隊成員群體思維,全部按照主流的思想或者負責人的思路去應對及處理,如果主流方法不是合適解法,有可能會將故障時間拉長。

還有一些公司將線上系統當成黑盒,工程師只需要將自己模塊合并進去,無需關注線上運行狀況。這種情況一旦出了可用性問題,大部分工程師是一籌莫展的,只能依靠少數幾個精英來解決問題,通常不利于問題的迅速解決。

4、充分利用系統預留擴展能力的原則

martian-4

馬克與地球取得聯系,是依靠1996年發射的火星探路者號(Pathfinder),并且依靠其預留的通訊接口,讓實時文本聊天成為可能。火星救援最后的決定作用是預留的MAV,通過下次任務戰神四號預留的MAV上升載具起飛到太空軌道,然后對接上宇宙飛船赫耳墨斯號返回地球。這讓馬克在食品用完之前返回地球成為了可能。

我們在開發高可用系統時,大部分服務模塊的代碼都留了一個開關,可以在適當時候開啟或者關閉一段代碼。雖然在99.9%的場景下這個開關不起作用,但在災難事故發生時候,可能一個小小的開關猶如發生故障時玻璃窗旁邊的救生錘,可以決定整個事故的走向。

5、簡單粗暴處理原則

火星救援最后的MAV起飛時候,由于上升高度不能到達赫耳墨斯號對接,因此簡單粗暴的將所有沒用的東西去除。看起來可能在電影里面才會出現,但如果真的碰到類似情況,可能也沒有更好的處理方法。

在處理故障過程當中,很多時候也需要打破常規,用一些簡單粗暴的方法,這些方法可能臨時會造成一些用戶訪問的問題,甚至會引起部分數據的不一致,但是如果能讓整體迅速恢復,這些簡單粗暴的方法是值得鼓勵和嘗試的。關鍵技術負責人需要知道有合適的善后技術方案來恢復這些用戶的數據。

馬克·瓦特尼回到地球,許多天后的一天清晨,坐在公園長椅喝咖啡,原來我們寫代碼普通一天也是火星人羨慕的幸福生活。

本文中文翻譯參考《火星救援》譯林出版社中文版。

【編輯推薦】

  1. Linux系統運維的重要原則和方法詳解
  2. 專訪九叔:系統運維人員如何解決突發性故障?
  3. 運維經驗分享:關于系統運維監控的幾點建議
  4. 【2014WOT深圳站講師專訪】肖力:大數據時代的系統運維
  5. 【博文推薦】解脫系統運維復雜的工作流程:系統集中運維管理平臺(社區版)
【責任編輯:林師授 TEL:(010)68476606】

相關熱詞搜索:故障恢復 系統運維

上一篇:運維自動化與標準規范化:解析、設計及實現(1)
下一篇:詳解數據中心的運維自動化和DevOps(1)

分享到: 收藏