如何運用結構化思維進行故障處理
近期收到朋友贈送的一本書—《深入淺出MySQL》。閒暇之餘,閱讀了部分章節,書中針對故障處理一節,給我印象頗深。書中提煉出的一些方法論,正是我之前在團隊中推廣的方法。其目的是為了將故障應急操作標準化,進而提升處理效率。推而廣之,這其實是一種結構化思維在具體工作中的體現。而這種思想在某具體工作、乃至個人、團隊發展等,均可發揮重要作用。特寫下此文。
一、故障處理流程
1.1 示例:資料庫故障處理
下面是來自網易的一些經驗,整理自《深入淺出MySQL》一書。
1.1.1 事前:故障處理原則
1)溝通第一
在資料庫出現故障時,務必和運維、開發、產品等其他團隊保持高效溝通。DBA在遇到故障時,一定不要忘了溝通的重要性,即使時間緊迫,簡要的溝通往往也能帶來事半功倍的效果。從長遠來看,也有利於培養和其他人、其他團隊之間的合作和信任關係。
2)關注人為
人為故障佔有不小的比例。要透過及時溝通並檢視歷史記錄,確認操作是否有誤、要和其他團隊溝通是否有特殊操作。當然,解決人為故障最好的方法還是將資料庫運維自動化、標準化、規範化。
3)快速恢復
在處理故障的時候,要明確的一個思路是要優先恢復服務,確保服務的最大可用性,其他的不一定要優先考慮。
4)三思後行
有些故障處理方式,可能對資料庫造成難以恢復的影響,務必慎重,並儘量做好備份。對於操作本身不熟悉帶來額外的問題,要儘量避免。認真考慮命令可能帶來的後果,避免對系統造成二次傷害。
5)服務分級
平時應當對服務、應用、資料庫做好分級,一旦出現大面積故障,可以按照服務的優先順序來恢復核心業務。
1.1.2 事中:故障處理流程
1)故障發現
-
OS指標
- 負載
- CPU使用率
- 磁碟空間
- IO使用率
- SWAP使用情況
-
DB指標
- 資料庫存活
- 連線數
- 慢SQL
- 主從延遲
2)故障定位
-
檢查操作
- 程式釋出
- 線上表變更
- 線上資料修改
- 後臺任務、資料統計
- 資料庫引數調整
- 其他誤操作
-
檢查OS
- 系統程式
- CPU
- 記憶體、SWAP
- IO
- 系統日誌
-
檢查DB
- 連線
- 慢查詢
- 鎖等待
- QPS
- 錯誤日誌
1.1.3 事後:故障解決方法
1)慢SQL
- 選擇條件上沒有索引或者索引效率低。
- 有索引,但沒有用到索引,或者選擇了錯誤的索引。
- 過濾條件不強,結果集太大。
2)SQL執行頻率高
- 惡意攻擊
- 快取失效
- 應用實現邏輯不合理
- 業務量突增
3)鎖衝突
- 大事務
- 熱點問題
4)硬體問題
- RAID卡快取問題
- 硬體損壞
5)引數不合理
1.2 示例:GP資料庫異常處理(我的經驗)
下面是我在之前單位總結的,針對GP的異常處理流程。圖中的【】部分對應具體的處理步驟(對應指令碼或操作文件)。
從上述兩個示例可以看出,這是一種"統籌式"的工作方式,而非"應急式"的。它強調的是在出現故障後,按照規劃好的原則、步驟進行分析排查,找出核心問題;然後針對既有問題,再按照已有的相關預案進行處理。同時在處理過程中,注意規避風險及溝通協調,以期達到故障的快速解決。 顯然這種方式,代表著一種對工作的前瞻力,防患於未然;避免了那種忙於救火,使工作永遠處於被動之中。上述其實就是一種"結構化思維"的體現。
二、結構化思維
2.1 什麼是"結構化思維"?
- 思考的時候沒有邏輯,大多數時候不知道從哪裡下手。
- 講話時沒有條理,費很多口舌卻很難把事說清楚。
- 處理問題時效率低,東撿西漏,忙得團團轉效果卻不佳。
- 當你面臨上述窘境時,正是可以考慮訓練自己的結構化思維來解決。
結構化思維:是指一個人在面對工作任務或者難題時能從多個側面進行思考,深刻分析導致問題出現的原因,系統制定行動方案,並採取恰當的手段使工作得以高效率開展,取得高績效。當你這樣做事的時候,你就擁有了結構化思維,這將對你的職場晉升起到巨大的幫助作用。思維決定發展,思維層面不同導致結果不同。簡言之,結構化思維指從整體思考到區域性,是一種層級分明的思考模式。就是借用一些思維框架來輔助思考,將碎片化的資訊進行系統化的思考和處理,從而擴大思維的層次,更全面地思考。
2.2 結構化思維方法
如何進行結構化思考呢,也是有方法論的,總的來說是有兩個步驟,首先是“建立中心”,然後再進行“分解”。
1)建立中心
建立中心也就是要定義清楚要解決的問題,要明確目標,也是一種以終為始的思考方式。也就是說,首先要搞清楚why,然後再進行how。建立中心有兩種方式:自上而下、自下而上。後面我們會詳細說明。
建立中心通常不會是一次成型的,隨著對問題理解的變化,對中心的抽象也會進行相應的調整。不同的抽象層次其面對的問題寬度是不一樣的。具體要用哪個層次的抽象作為“中心”,要視具體情況而定。抽象層次越高,要解決的問題域就越寬,外延越大。比如面對“系統 bug 多”的問題,向上抽象是“提升程式碼質量”,向下抽象是“加強測試”,都可以作為中心,選擇哪個為中心取決於你當前要解決的問題是什麼。
2)結構化分解
使用結構化的思維對問題進行分解。分解策略就是常見的四種邏輯順序,即演繹順序、時間順序、空間順序和程度順序。
3)邏輯順序
下面配圖為XMind工具的對應圖例。
- 演繹(因果)順序
“大前提、小前提、結論”的演繹推理方式就是演繹順序。比如,經典三段論:所有人都要死,蘇格拉底是人,蘇格拉底要死。
- 時間(步驟)順序
“第一、第二、第三”,“首先、然後、再者”等,很多的時間順序同時也是因果順序。
- 空間(結構)順序
“前端、後端、資料”,“波士頓、紐約、華盛頓”,化整為零(將整體分解為部分)等都是空間順序。在做空間分解的時候,要注意滿足 MECE(Mutually Exclusive Collectively Exhaustive,相互獨立,完全窮盡)原則。
- 程度(重要性)順序
比如“最重要、次重要、不重要”等。
2.3 "自上而下"的思考
自上而下的思考,適用於問題比較明確的情況,我們只需要找到問題的核心要素即可,然後進行展開即可。這就是一個非常典型的總分結構化思維的思考方式。先總結,後發散。用這種方式思考,有助於形成、整理和構造思維導圖,從而促進大腦自然有序地思考,從而讓你更全面地去分析一個問題。下面介紹幾種常見的自上而下的思考模型:
1)STAR法則
- Situation 背景
- Target 目標
- Action 行動
- Result 結果
2)SWOT 分析方法
- Strengths 優勢
- Weaknesses 劣勢
- Opportunities 機會
- Threats威脅
3)問題解決
分析問題>找到原因>設定目標>提出解決方案>實施
2.4 "自下而上"的思考
對於問題不夠明確的情況,需要對多種雜亂的內容,進行分類、剪枝、歸納彙總成一箇中心。根據《金字塔原理》“任何事情都可以歸納出中心論點,中心論點可由三至七個論據支撐,每個一級論點可以衍生出其他的分論點。”如此發散開來,就可以形成以下的金字塔結構思考方式。
但是在還沒有掌握這種結構化思維方式時,直接用這種思考方式是有一定難度的。這時候我們就可以採用自下而上的思考方式去找結構。
- 儘可能列出所有思考的要點
- 找出關係,進行分類
- 總結概括要點,提煉觀點
- 觀點補充,完善思路
總結下就是:先發散,後總結。用這種方式思考,不僅更容易找到邏輯結構,也更容易培養你的結構化思維。舉個例子,當我們面臨職業發展選擇時,如何總結提煉出自己的決策。
2.5 增強 — 擴充套件性思維
擴充套件性思維的核心目標是提升思維的廣度,可以有三種擴充套件方向:
- 舉一反三:解決同型別的N個問題
這種思維方式的特徵是舉一反三,觸類旁通,相當於產生批處理的效果,可以大大提升解決問題的效率,避免重複處理。
- 尋求可能性:擴充解決問題的不同手段
擴充思維常見的手段是:是否能夠換更多的理解方式,或者更多的解法。
- 深挖根源:挖掘問題深層次原因
這種思維方式是要突破現有問題的表面化解決,而是需要深挖原因,探究根本問題。只有這樣才能從根本上解決問題。
2.6 示例:我的一次故障經歷(深挖原因)
寫在最後
思維方式有很多種,你可以在實際工作中,嘗試使用上面的方法。堅持一段時間後,你會發現想問題時更有邏輯性,說話也更有條理更有說服力。不僅如此,你還可以用這種結構化的思維,去搭建和構造自己的思維體系。
作者:韓鋒
首發於作者個人公號《韓鋒頻道》。
來源:宜信技術學院
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69918724/viewspace-2660137/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 結構化思維
- 說一說結構化思維
- 如何利用結構化思維寫好分析報告?
- 如何訓練結構化思維能力?它是一種工作方法還是思維方式?
- rabbitmq 原理、叢集、基本運維操作、常見故障處理MQ運維
- 用結構化思維解一切BUG(3):實際案例
- 用結構化思維解一切BUG(1):核心思路
- 如何用深度學習處理結構化資料?深度學習
- GPON網路故障如何處理?GPON網路故障處理流程
- 如何快速處理線上故障
- 如何運用專案管理思維制定工作計劃?專案管理
- 如何建立架構師的立體化思維?架構
- 快準穩:值得所有運維學習的SRE故障處理經驗運維
- 運維經理的運維經驗總結運維
- H3C運維審計系統故障處理手冊(筆記)運維筆記
- 處理網路連結故障技巧
- 用自動化運維工具解放IT運維運維
- 如何用遊戲化思維構建 "好玩" 的遊戲平臺遊戲
- 以遊戲化思維來做運營工作遊戲
- 如何處理HTTP 503故障問題?HTTP
- 你真的會學習嗎?從結構化思維說起
- C++和結構化異常處理C++
- 透過運維編排實現自動化智慧運維與故障自愈運維
- 如何變聰明?訓練自己變成結構化思維型的人!- TechMoon 科技月球
- 日常運維之TX鎖處理(一)運維
- 日常運維之TX鎖處理(二)運維
- 【故障處理】一次RAC故障處理過程
- 如何運用TRIZ理論與企業自身需求融合應用進行創新?
- MongoDB故障處理MongoDB
- 函式計算進行自動化運維專題函式運維
- 于振:如何通過倉儲,對實體進行持久化處理?持久化
- 故障分析 | Greenplum Segment 故障處理
- MPU進化,多核異構處理器有多強?
- 大話資料結構-思維導圖資料結構
- 線上MYSQL同步報錯故障處理總結MySql
- 壞塊的處理思維(用程式製作壞塊不如用系統)
- 從運維到運營——IT管理的“進化論”運維
- 樹形結構處理