English· Español· Deutsch· Nederlands· Français· 日本語· ქართული· 繁體中文· 简体中文· Português· Русский· العربية· हिन्दी· Italiano· 한국어· Polski· Svenska· Türkçe· Українська· Tiếng Việt· Bahasa Indonesia

un

guest
1 / ?
back to lessons

閱讀長尾

延遲存在於曲線上,而不是一個數字

平均延遲隱藏了用戶體驗。真實服務產生分佈:顯示有多少請求花費多長時間的曲線。

曲線上的三個點承載了大部分操作意義:

- p50 (中位數): 分佈的中間。一半的請求完成得快,一半慢。描述了典型的用戶體驗。

- p99: 第99百分位。只有1%的請求比這花費時間更長。描述了典型用戶的最差體驗。

- p99.9: 只有0.1%的請求花費時間更長。描述了頻繁使用服務的超級用戶的最差體驗。

幾何洞察: 延遲分佈幾乎總是有一個長右尾。曲線在中位數附近迅速上升到峰值,然後向右緩慢下降,通常在遠離平均值處有一個小凸起。那個凸起代表最慢的用戶:那些寫投訴工單的用戶。

為什麼平均值是誤導的: 中位數為50毫秒、p99為5000毫秒的服務在典型體驗和尾部體驗之間有100倍的差距。算術平均值可能落在100毫秒,完全隱藏了災難。算術平均值是2D形狀的單點投影:形狀的幾乎所有信息都消失了。

百分位乘法問題: 接觸10個後端服務的請求,每個的p99為100毫秒,其p99大約為600毫秒(不是100毫秒)。慢尾倍增。這就是為什麼SRE書籍警告:'當心N個中最慢的'。隨著N增長,你的尾延遲迅速惡化。

延遲分佈:標記了長右尾、p50、p99、p99.9

尾延遲數學

服務A有一個請求流,並行扇出到5個後端服務,並等待所有響應。每個後端的p99延遲為100毫秒。

估計服務A在給定扇出結構下的p99延遲。解釋為什麼答案不同於100毫秒。延遲分佈中的哪種幾何模式導致了這種倍增,以及什麼是可以減少尾放大的一個具體架構變更?

預算耗盡作為斜率

繪製隨時間變化的預算

在2D軸上繪製的錯誤預算(x軸為時間,y軸為剩餘預算)一眼就能看出服務健康狀況。耗盡曲線的形狀承載了十個儀表板才能傳達的信息。

三個參考形狀:

- 健康的線性耗盡: 預算以與經過時間成正比的直線下降。在28天窗口的第14天,應該剩下一半的預算。這是SLO目標變得可見。

- 快速燃燒: 向下的陡峭斜率。表示存在活躍的可靠性問題。如果斜率足夠陡峭,預算會在窗口重置之前耗盡,觸發錯誤預算政策。

- 修復曲線: 平坦或上升的片段。服務性能優於其SLO。隨著時間的推移,剩餘預算增加,為風險發布留出空間。

燃燒率是耗盡線的標準化斜率:燃燒率為1意味著預算完全按時間流逝的速度耗盡(與SLO完全一致)。燃燒率為10意味著燃燒速度是允許速度的10倍:整個月度預算將在這個速率下的2.8天內耗盡。

多窗口多燃燒率告警: Google的SRE工作手冊建議在'燃燒率在過去一小時內超過14.4且在過去5分鐘內超過14.4'等複合條件上設置告警。幾何學:持續陡峭的斜率,不只是短暫的尖峰。這種形狀濾除了瞬間波動,同時捕捉真正的耗盡威脅。

錯誤預算耗盡:線性、快速燃燒、修復形狀

閱讀燃燒率

你的團隊SLO在28天內為99.9%。在第7天,你已經使用了60%的錯誤預算。過去24小時內的當前燃燒率為8。

計算如果燃燒率繼續的窗口末期狀態(預算耗盡或盈餘)。然後描述耗盡圖的幾何形狀告訴你什麼,以及錯誤預算政策可能在本週要求你做什麼。

服務作為有向圖

作為DAG的生產環境

現代服務作為相依圖運行。每個服務是一個節點。每個服務A到服務B的調用是從A到B的有向邊。完整圖形形成有向圖(有時是DAG,有時通過非同步重試有循環)。

關鍵幾何特性:

- 出度: 節點依賴多少個服務。出度越高意味著更多的上游故障模式。依賴12個後端的服務在任何一個失敗時就會失敗。

- 入度(扇入): 有多少個服務依賴此節點。入度越高意味著單個故障的級聯範圍越廣。擁有30個依賴服務的數據庫具有最大的影響半徑。

- 介於中心性: 多少條最短路徑通過一個節點。高介於中心性的節點是瓶頸。認證服務和核心API通常得分很高。

- 強連通分量: 形成循環的服務組。如果A調用B且B調用A,則有一個循環。循環會複雜化故障恢復:啟動任一服務都需要另一個服務已經工作。

影響半徑是驅動可靠性投資的幾何概念。故障的影響半徑是其影響的依賴服務的子圖。可靠性工程在最高介於中心性節點進行大量投資。改善整體系統可靠性的最便宜方法通常是在最高介於中心性節點添加冗餘或優雅降級。

服務相依圖,高介於中心性節點突出顯示

影響半徑推理

消費者服務依賴於:AuthService、UserDB、ProductCatalog、PaymentGateway、RecommendationEngine、EmailService、AnalyticsService。AuthService有47個其他服務依賴它。EmailService有3個其他服務依賴它。RecommendationEngine有2個其他服務依賴它。

按影響半徑從最高到最低對這三個服務進行排名。然後描述在最高影響半徑節點上首先進行的兩個具體可靠性投資,& 解釋為什麼在那裡進行相同投資比在較低影響半徑節點進行投資能帶來更多的總體可靠性提升。

儀表板的信息幾何

像素是真實資產

儀表板是一個2D表面,面積有限。分配給一個信號的每個像素都是一個沒有分配給另一個信號的像素。儀表板設計是一個幾何問題:在保留有助於識別的空間關係的同時,將最有決策相關的信息排列在最小的視覺區域內。

閱讀模式: 西方讀者以F形掃描(左上首先,然後橫跨,然後向下)。最重要的信號應該在左上角。右下角獲得最少的注意力。

格式塔分組: 來自同一服務的信號應該在同一視覺組中。延遲、流量、錯誤和飽和度應該在一個服務中以2x2網格排列,而不是分散在整個屏幕上。視覺接近編碼邏輯關係。

色彩編碼: 紅色表示錯誤,黃色表示飽和度,綠色表示健康範圍。色彩選擇是約定,而不是隨意的。反轉它們會在每次事件期間查看時產生認知負荷。

Y軸縮放: 縮放到0-100%的圖形看起來平靜,即使在流量翻倍的情況下。自動縮放到最近值的圖形在正常變化期間看起來令人震驚。兩種選擇都有適當的用途;選擇是幾何學的,而不是表面的。

信息密度: 太少的信號使團隊對錯誤的地方視而不見。太多的會將信號淹沒在噪音中。Edward Tufte的數據墨水比適用:最大化傳達信息的墨水與裝飾墨水的比例。Sparkline式的極簡主義在一眼就擊敗了雜亂的小部件。

儀表板佈局:F形閱讀、格式塔分組、色彩編碼

為第一眼設計

你的團隊正在為一個在4個後端相依項中有8個關鍵SLI的服務設計單個主要儀表板。儀表板必須在凌晨3點內5秒內回答值班工程師的第一個問題:'有什麼東西在燃燒,如果有,在哪裡?'

描述你會選擇的幾何佈局。最關鍵的信號在屏幕上的哪個位置?你如何按相依項對SLI進行分組?你應用什麼樣的色彩和縮放約定,& 什麼具體元素確保工程師可以在不閱讀任何文本的情況下回答'有什麼東西在燃燒'問題?

SRE的幾何:結束

運行生產的形狀

你已經走過了四個運行於SRE實踐之下的幾何結構:

- 延遲分佈作為長尾曲線,其中百分位點比平均值承載更多真實

- 錯誤預算圓錐,其中耗盡的斜率比剩餘數字更好地顯示服務健康

- 服務相依圖,其中影響半徑和中心性引導可靠性投資

- 儀表板佈局作為2D資產,其中像素分配是具有操作後果的幾何問題


幾何思維是將SRE與通用運營工作分開的東西。運營工程師閱讀數字。SRE讀形狀。形狀編碼單個數字無法捕獲的信息:燃燒率的斜率、尾部的厚度、節點的中心性、儀表板面板的格式塔。


SRE本身的伴侶課程涵蓋了實踐。本課程涵蓋了它們之下的幾何。一起,他們形成了現代可靠性工程的視覺和概念支架。