本文主要分享《分散式服務架構:原理、設計與實戰》相關的線上應急的目標、原則和方法。之所以分享在於近來再次回顧了以往的線上應急案例,覺得其中的內容有很大的參考價值。
行動的方向在關鍵時刻一定要正確,在應急過程中不能偏離目標:
在生產環境發生故障時快速恢復服務、避免或減少故障造成的損失,避免或減少故障對客戶的影響。
線上應急一般分為6個階段:發現問題、定位問題、解決問題、消除影響、回顧問題、避免措施。
發現問題時通常通過自動化的監控和報警系統來實現。一般我們會對系統層面、應用層面和資料層面進行監控。
對系統層面的監控包括對系統的CPU利用率、系統負載、記憶體使用情況、網路I/O負載、磁碟負載、I/O等待、交換區的使用、執行緒數及開啟的檔案控制程式碼數等進行監控,一旦超出閾值,就需要報警。
對應用層面的監控包括對服務介面的響應時間、吞吐量、呼叫頻次、介面成功率及介面的波動率等進行監控。
對資源層的監控包括對資料庫、快取和訊息佇列的監控。我們通常會對資料庫的負載、慢SQL、連線數等進行監控;對快取的連線數、佔用記憶體、吞吐量、響應時間等進行監控;以及對訊息佇列的響應時間、吞吐量、負載、積壓情況等進行監控。
定位問題時,首先要根據經驗來分析,如果應急團隊中有人對相應的問題有經驗,並確定能夠通過某種手段進行恢復,則應該第一時間恢復,同時保留現場,然後定位問題。
在應急人員定位過程中需要與業務負責人、技術負責人、核心技術開發人員、技術專家、架構師、運營和運維人員一起,對產生問題的原因進行快速分析。
在分析過程中要先考慮系統最近發生的變化,需要考慮如下問題:
解決問題的階段有時在應急處理中,有時在應急處理後。在理想情況下,每個系統會對各種嚴重情況設計止損和降級開關,因此在發生嚴重問題時先使用止損策略,在恢復問題後再定位和解決問題。
解決問題要以定位問題為基礎,必須清晰地定位問題產生的根本原因,再提出解決問題的有效方案,切記在沒有明確原因之前,不要使用各種可能的方法來嘗試修復問題,這樣可能還沒有解決這個問題又引出另一個問題。
在解決問題時,某個問題可能還沒解決就已恢復,無論在哪種情況下都可能需要消除問題產生的影響。
消除問題後,需要應急團隊與相關方回顧事故產生的原因、應急過程的合理性,對梳理出來的問題提出整改措施,主要聚焦於如下幾個問題:
當然,回顧事故的目的是不再犯類似的錯誤,而不是單單懲罰當事人,就沒有然後了。
根據回顧問題時提出的改進方案和避免措施,我們必須以正式的專案管理方式進行統一管理。如果有專案經理的角色,則將避免措施和改進措施一併交給專案經理去跟進;如果沒有,則請建立一個改進措施和避免措施的跟進方案和機制,否則,久而久之,問題就被忽略了。
過往寫的一些文章可供讀者朋友們參考:
回顧職業生涯,除以上文章列舉的案例外,還有更多,例如以下三個:
同樣無論你的職責是研發工程師還是架構師、技術經理、專案經理之類的,都需要敬畏以下法則和定律:
海恩法則的定義為:
每一起嚴重事故的背後,必然有29次輕微事故和300起未遂先兆及1000起事故隱患。
該法則強調如下兩點:
如果有兩種或兩種以上方式去做某件事情,而選擇其中一種方式將導致災難,則必定有人會做出這種選擇。
墨菲定律強調以下四點:
本文分享到此結束,希望能夠對大家有所幫助!!!