成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

11.11大促背后的技術保障:SLA與SLO的深度解析與實踐案例

網絡 網絡管理
我們應該從用戶最關心的方面入手,而不是目前可以監控度量什么著手(當然目前UMP監控度量的維度已經很多,部分指標可作為SLI)。制定適當的SLO的第一步是討論SLO應該是什么以及應該涵蓋什么。SLO為服務的客戶設置了目標可靠性級別。

背景

又到一年的11.11大促日,最近很多團隊郵件上下游確認SLA,你是不是還沒搞明白服務質量SLA、SLO等概念?本文通過理論知識以及基于SLO告警治理的實踐經驗分享。詳細介紹如何設置SLO、有效的告警泛濫治理、以及如何根據SLO的指標來優化服務性能和可靠性。

問題(1)

首次接觸到了SLA(服務等級協議)的概念,其中承諾的響應時間是200毫秒。而服務接口的TP99(即99%的請求完成時間)超過了100毫秒,上游的超時配置卻是2000毫秒。這之間存在何種聯系呢?我感到有些困惑。后來在工作中逐步搞清楚了SLA的概念。

問題(2)

年初還有一個疑問一直困擾著我。例如,我負責的系統中的一個API接口的可用率是99.99%,那么在部門中,包含了N個系統和M個接口,部門的季度可用率是99.98%,這個數字又是如何計算出來的呢?統計的規則又是什么?我請教了XXX同學,給我解惑答疑,非常感謝!

問題(3)

比如我在XXX云購買了100臺云主機,在10:00-10:05這5分鐘內,有10臺機器出現故障,導致API的對外可用率只有90%(在這5分鐘內,總請求數為1萬,失敗的請求數為1000)。如果一個月30天,每天發生一次這樣的5分鐘,那么這可用率到底是多少呢?

帶著以上的這些問題,研究了服務質量的指標:SLI(服務水平指標)、SLO(服務水平目標)和SLA(服務等級協議)。如果你也對上面的問題感興趣,并且想找到答案,歡迎閱讀本文,以下是我的研究成果,供大家參考,如果有不對的地方,還請大家指正。

一、服務質量術語

如果你不了解你負責的系統內部的各種行為的重要程度,并且無法度量這些行為是否正確的話,就無法正確的去運維系統,更不用說穩定可靠的運維了。不管是對外服務還是內部API,都需要制定一個針對用戶的服務質量目標,并且努力去達到這個目標。

在這個過程中,我們需要根據歷史經驗,主觀判斷以及對服務的理解來定義一些 服務質量指標(SLI),服務質量目標(SLO),服務質量協議(SLA)以及這些指標的預期值和應對計劃。

1)服務質量指標SLI(Service Level Indicator)

定義:該服務的某項服務質量的一個具體量化指標

常見的SLI包括:

  • 可用率(成功響應的請求比例)
  • 請求延遲的99%(TP99請求處理耗時)
  • 吞吐量(每秒請求量)
  • 持久性(數據能夠保存的完整時間,常用于數據存儲系統)

2)服務質量目標SLO(Service Level Objective)

定義:服務的某個SLI的目標值或者目標范圍。

SLO的定義是SLI《目標值,或者 范圍下限《SLI《范圍上限。

設置服務水平目標(SLO)的好處主要體現在以下幾個方面:

1.對于客戶端而言,SLO提供了一種可預期的服務質量,這使得客戶端的系統設計可以更加簡單和穩定。客戶可以根據SLO來規劃和調整自己的業務流程,減少不確定性帶來的影響。

2.對于服務提供者而言,SLO帶來的好處包括:

  • 可預期的服務質量:SLO可以幫助服務提供者明確服務質量的標準和目標,從而更好地管理和優化服務。
  • 更好的成本/收益取舍:通過設定合理的SLO,服務提供者可以在資源投入和服務質量之間找到一個平衡點,實現更有效的資源利用和成本控制。
  • 更好的風險控制:當資源受限或出現故障時,SLO可以幫助服務提供者更好地控制風險,避免服務質量下降對業務造成的影響。
  • 故障時更快的反應和采取正確措施:SLO可以作為一個參考標準,幫助服務提供者在故障發生時更快地發現問題并采取正確的措施,減少故障恢復時間。

選擇一個合適的SLO是非常復雜的過程,難點是可能無法確定一個具體的值比如對外API,每秒查詢數量QPS指標由用戶決定的,我們并不能針對這個指標設置一個SLO。但是我們可以指定請求TP99時間小于20ms.確定這個目標可以鼓勵開發者優化代碼性能.

3)服務質量協議SLA(Service Level Agreement)

定義:指服務和用戶之間的一個明確的,或者不明確的協議。描述了在達到或者沒有達到SLO之后的后果。這些后果可以是財務的(賠償)或者其他的。

區別SLO和SLA的一個簡單方法是問:“如果SLO沒有達到時,有什么后果?”,如果沒有定義明確的后果。那么我們肯定是在討論一個SLO,而不是SLA。

Google搜索服務是沒有公開SLA的一個典型服務。

4)云服務級別協議CSLA(Cloud Service Level Agreement)

詳見第三章節

圖片圖片

二、SLO實踐案例

我們可以SLO實踐案例來指導我們的穩定性建設。

1)服務分級&核心接口分級

分級規則

  • 根據業務影響,應用分為0-3級
  • 應用里面的接口再次細分0/1級,因為很多歷史原因,很多0/1級系統內部N個接口,但M個接口是非核心的。或者2級應用里面有N個0級接口。關注核心接口的健壯性(是否可用率治理完成,是否可降級,是否配置合理的限流值)

分級用途

?基于服務等級,要求核心服務遵守對應標準(比如代碼評審,上線發布,變更流程,大促管控)。

?報警基于服務等級來做分級

?不同等級穩定性要求SLO不一樣,如具備熔斷降級能力等。

注意事項

  • 全鏈路應用定級不統一:比如整個鏈路既有0級應用,也有1級別應用,還會存在很多3級應用

解決方案:推動下游更新應用等級

如下圖,通過工具掃描0/1級依賴的下游等級應用是3級,

  • 接口定級不統一:比如某個歷史接口,A部門從自身角度出發認為接口不重要,但上游,上游強依賴,有時候出現線上故障后才知道該接口的重要性

解決方案:需要鏈路追蹤,從用戶視角(用戶購物、物流一線操作業務)看影響,但這個有時候挺難的,尤其是歷史接口,鏈路太長

3、接口可用率不準確:比如內部異常被catch吃掉了,沒有反應到接口最外層,比如服務故障了半個小時,但ump可用率還是100%

解決方案:進行代碼可用率治理,讓API可用率是真實的。

2)SLI實踐應用

選擇能代表業務核心功能的API,按上面的業務分級模型對這些API定級,一般只度量L0、L1等級的業務和其接口。那么應該定義哪些指標?為什么定義這些指標?這些指標是服務最重要嗎?

比如UMP打點監控指標有:

1)方法性能:TP50,TP90,TP99,TP999,TP9999,MIN,MAX,AVG

2)方法可用率

3)方法調用次數

這些監控指標我們都需要作為SLI嗎?答案肯定不是。只有理解用戶對系統的真實需求才能真正決定哪些指標是否有用。指標太多會影響重要的指標,指標太少又會導致重要的行為被忽略。一般來說,3-5個具有代表性的指標對系統健康度的評估和關注足夠了。

根據常見的服務SLI分為如下幾類

圖片圖片

3)SLO實踐應用

我們應該從用戶最關心的方面入手,而不是目前可以監控度量什么著手(當然目前UMP監控度量的維度已經很多,部分指標可作為SLI)。制定適當的SLO的第一步是討論SLO應該是什么以及應該涵蓋什么。SLO為服務的客戶設置了目標可靠性級別。

為了更清晰的定義,SLO應該具體支持他們是如何被度量的,以及其有效條件。例如:99%(在1分鐘時間范圍內的請求匯總)的JSF-API調用會在200ms內完成(包括全部后端服務器)

圖片圖片

選擇目標SLO策略建議

1.不要追求完美:不要以當前的運行狀態為基礎選擇目標,而應該從全局觸發,剛開始可以制定一個寬松的目標(前提滿足用戶),逐步收緊。比如目前API的TP99是8ms,對外SLO的TP99是10ms,如果后期接口內部邏輯改造,需求變更等導致API的tp99是20ms,則不滿足SLO。

2.留出一定的安全區:對內使用更高的SLO,對外使用稍低的SLO。這樣可以留出一些空間來響應需求等。緩沖區buffer可以保護我們不會對用戶產生直接影響。

您第一次嘗試SLI和SLO不一定正確。最重要的目標是進行適當的測量并建立反饋環路,以便您進行改進。隨著SLA的變更,系統架構不斷的迭代演變(比如之前SLA的TP99是1000ms,你采用mysql架構存儲數據,后面變成面向20ms,這時候的mysql架構就不適合了,需要演變為比如redis緩存等形式)

4)SLA實踐應用

研發需要和業務產品同事綜合考慮,目前內部通過郵件達成協議。外部云廠商則通過合同達成協議(保護未達到SLO的補償條款)

三、云服務協議(可跳過)

對本章節內容不感興趣的,可跳過

1)國家標準:信息技術 云計算 云服務級別協議基本要求

圖片圖片

2)京東云主機服務等級協議(SLA)

圖片圖片

3)阿里云服務器 ECS服務等級協議

圖片圖片

4)AWS&Google云產品服務協議

圖片圖片

圖片圖片

四、API 網關服務等級協議

下面分別介紹不同廠商的API網關服務的可用率定義

1)京東云API 網關服務等級協議(SLA)

圖片圖片

2)阿里云API 網關服務等級協議(SLA)

圖片圖片

3)亞馬遜云API網關服務SLA

圖片圖片

五、基于SLO告警治理實踐

SLO是可靠性決策的關鍵因素。應用每天都有無數的報警通知,如CPU、內存、磁盤、可用率、MAX,tp99,tp999等,產生了大量噪音。但哪些報警會影響到可用性,需要SRE和研發關注呢?這就是SLO的核心價值之一了。

告警設定的目標:根據SLO對重要的事件做出可操作性的告警。

告警設定的依據:基于服務質量指標(SLI)和錯誤預算,對每一個消耗大量錯誤預算的事件發出重大事件的告警通知。

參考上面設定的SLO配置的報警信息如下:

1)API告警配置

我們可以通過設置合理的閾值和規則,過濾掉那些不必要的告警信息,從而避免告警噪音對開發運維團隊的干擾,讓他們更加專注于真正的問題。

?通過UMP實現3個黃金監控指標(可用率、調用量、TP99)

在配置報警機制時,我們可以綜合考慮可用率、TP99以及調用量等因素來進行評估。通過這些指標的綜合評估,可以幫助我們更全面地了解系統運行情況,從而及時發現潛在的問題并采取相應的措施。

建議在進行報警配置時,可先采取較為嚴格的策略,即先緊后松,逐步調整到最佳狀態。這樣可以確保在最開始階段就能夠及時發現問題,避免出現重大故障。但隨著系統的逐漸穩定,我們也可以根據實際情況適當放寬報警閾值,以提高系統的可用性和效率。

需要注意的是,在進行報警配置時,我們需要結合具體的業務場景和系統特點來進行調整和優化。不同的系統可能存在不同的風險點和瓶頸,因此我們需要根據實際情況來制定相應的報警策略,以保證系統的穩定性和可靠性。

比如SLO:分鐘級TP99是200ms,但你日常TP99在80ms,根據日常接口的行為,電話critical報警一定得配置<=200ms,warning可配100ms或者150ms等不斷調整到最佳狀態

critical告警方式:咚咚、郵件、即時消息(京ME)、語音 可用率:(分鐘級)可用率 < 99.95% 連續 3 次超過閾值則報警,且在 3 分鐘內報一次警。性能:(分鐘級)TP99 >= 200.0ms 連續 3 次超過閾值則報警,且在 3 分鐘內只報一次警。

warning告警方式:咚咚、郵件、即時消息 可用率:(分鐘級)可用率 < 99.99% 連續 3 次超過閾值則報警,且在 30 分鐘內報一次警。性能:(分鐘級)TP99 >= 100.ms 連續 3 次超過閾值則報警,且在 30 分鐘內只報一次警。調用次數:當方法調用次數在 1 分鐘的總和,連續 3 次大于 2000000 則報警,且在 3 分鐘內只報一次警

備注:語音critical告警配置調用次數一般意義不大,因為如果你接口的可用率沒問題,并且你的TP99也在預期內,按調用次數高又有什么關系呢。但warning配置調用次數有一個好處,比如你配置了JSF限流,目前JSF限流是觸發了會報警,你可以在UMP或者Pfinder增加調用次數的閾值報警,比如設置為限流值的80%開始報警,這樣可提前發現限流導致的風險點。同時通過調用次數也可知曉流量增長趨勢

2)MQ告警配置

需要根據MQ延遲(數據從生產到消費需要多少時間)配置對應告警和應急預案

圖片圖片

?生產者T(1)監控:生產者到MQ的時間監控

?消費者T(2.1)監控:通過MQ的積壓報警配置進行監控。

?消費者T(2.2)處理邏輯監控:配置處理邏輯的UMP報警。

正常場景:T(3) > T(1) + T(2.1) + T(2.2)   其中T(3)包含讀最終數據的耗時

積壓報警的配置需要結合上述耗時公式,并且經過壓力測試來確定。

假設在積壓20,000消息的情況下,現有服務能力能夠在N毫秒內處理完成,并且滿足[ T(3) > T(1) + T(2.1) + T(2.2) ]的條件。那么,報警閾值可以設置為積壓20,000消息以下,例如10,000 warning,15000 critical報警以預留處理時間。

例如,若[ T(3) = 2000ms ],日常[ T(1) ]的最大值為20ms,在積壓20,000消息的情況下[ T(2.1) = 980ms ],[ T(2.2) = 1000ms ]。

3)定時任務告警配置

由于定時任務跟常規的JSF-API接口或者MQ不一樣,定時任務是在規則約定的時間內執行,如果UMP是定時任務,最重要的一點就是確定好監控時段。只有正確地配置了監控時段,才能確保UMP在預計時間段內正常執行,這樣一旦UMP未能在預計時間段內執行,就會自動觸發報警機制,及時發現并解決問題。

比如xxx是每天的1點執行

我需要監控1點是否執行了

圖片圖片

六、問題解答

通過閱讀本文,相信你已經知道如何解答文章開始的3個問題了

1)SLA、TP99、超時時間的關系?

1.TP99沒什么好說的,看接口的UMP打點即可,比如這圖接口的TP99是10-15ms。

圖片圖片

  • 由于上游是下單前黃金鏈路,對性能要求較高。SLA(其實是SLO)我們對外承諾的TP99(分鐘)是20ms,預留6ms的buffer
  • 超時時間設置:超時時間可以設置在TP99(業務要求高的參考TP999、TP9999、MAX)(包含網絡延遲)的基礎上加上一定的緩沖時間。其中緩沖時間需要根據經驗或監控數據等日常行為統計學,增加一個安全緩沖時間。例如,如果下游接口的TP99是200ms,您可能將超時時間設置為300ms到400ms。
  • 重試次數設置:

?下游接口必須支持冪等,方可重試

?重試策略:根據業務場景和下游接口的穩定性來決定重試次數。一般來說,重試次數不宜過多(1-3次),以避免加重系統負擔,同時要考慮重試后是否會不滿足你對外的SLA指標,尤其下游出現超時嚴重的時候。

?指數退避:使用指數退避策略,每次重試的間隔時間逐漸增加(例如,第一次等待1ms,第二次等待2ms,第三次等待4ms)。

4.實施和監控:監控實際的重試情況和超時情況,定期評估重試和超時策略對系統性能的影響。調整策略以適應實際情況。

請注意,設置超時時間和重試次數是一個需要平衡多個因素的決策過程。它需要考慮系統的穩定性、響應時間、資源使用和用戶體驗等多個方面。此外,任何重試策略都應該避免可能導致級聯故障或資源耗盡的情況。

2)團隊系統可用率是怎么計算的?

問題2:系統中的一個API接口的可用率是99.99%,那么在部門中,包含了N個系統和M個接口,部門的季度可用率是99.98%,這個數字又是如何計算出來的呢?

如A系統為黃金流程生產系統,因系統出現服務故障,導致生產業務無法操作,故障時長為A,影響業務占比率為B,則最終可用率故障時長為 C=A*B;

可參考問題3的計算公式

比如黃金鏈路故障時長150分鐘,影響業務占比10%,折合系統不可用時長=15分鐘。

則月度系統可用率=1-(故障總時長/統計周期總時長)*100%=1-(15/30*24*60)=99.96%

3)云主機&網關API可用率

問題3:比如在XXX云購買了100臺云主機(按照云主機SLA),其中在10:00-10:05這5分鐘,有10臺機器有故障,導致API對外可用率是90%(5分鐘之內總請求數1W,失敗請求數1000)。一個月30天每天發生類似的5分鐘1次。請問對用戶來說可用率是多少?

從2個維度來解答

  • 從提供基礎服務的云服務等級協議來解答(這個不同云廠商基本是一致的)。
  • 從面向用戶的API角度來解答 (不同廠商定義公式不一樣)

任何產品都不是,也不應該做到100%可靠,因為對用戶來說99.999%和100%的可用性大部分沒有本質的區別。那多少合適呢?可靠性目標需要考慮的因素:

  • 服務可靠性要達到什么程度,用戶才會滿意?
  • 如果可靠性不夠,是否有其他替代選擇?
  • 服務的可靠程度是否會影響用戶對服務的使用模式?
  • 是否直接關系到收入?
  • 服務是針對消費者還是企業?

圖片

七、技術指標&業務指標

正如上面說的SLA定義了服務可用性、性能等技術指標。那么業務指標到底要解決什么問題?解決技術指標(可用率,tp99)看不到的問題。關注的是數據的正確性和完整性

SLA的技術指標和業務監控的數據正確性通常是相互關聯的。技術指標不可用,則肯定業務指標會不可用。相反如果業務指標不可用有異常,不一定技術指標不可用。例如,如果一個系統的可用性低于SLA中定義的閾值,那么這可能會影響到業務流程的正常運行,從而導致數據錯誤或丟失。因此,為了確保業務連續性和數據準確性,SLA和業務監控通常需要共同考慮和管理。

八、「以終為始」SLA指導11.11大促備戰

SLA可以作為一個強有力的工具,指導11.11大促的備戰工作,明細如下:

1.明確服務目標:上下游明確SLA(服務性能TP99、可用性、峰值QPS)等方面的承諾。這些目標應該與11大促的業務需求相匹配,例如峰值流量下的系統穩定性和快速響應能力。

2.制定備戰計劃:根據SLA的要求,制定詳細的備戰計劃,包括資源配置、系統優化、災難如何快速恢復等。例如,如果SLA要求系統在高峰期的可用性達到99.99%,那么備戰計劃就需要考慮如何實現這一目標,你的容錯方案、降級方案、應急預案等。

3.軍演全鏈路壓測和容量規劃:為了確保在大促期間滿足SLA的要求,需要進行性能壓測&軍演全鏈路壓力測試和容量規劃。通過壓測高流量場景,驗證系統的性能和穩定性,并根據測試結果調整資源配置和系統優化策略。

4.監控和警報系統:建立一個全面的監控和警報系統,實時跟蹤服務的性能和健康狀況。如果某個指標超出了SLA的閾值,系統應該自動觸發警報,通知相關團隊采取行動。

5.優先級管理:在大促期間,根據SLA的重要性和影響范圍,設定問題的優先級,確保最關鍵的服務得到優先處理。

6.團隊協作和溝通:SLA要求各個團隊之間的緊密協作和高效溝通。建立跨部門的協作機制,明確每個團隊的職責和SLA目標,確保所有團隊都朝著同一個目標努力。

7.持續改進:11.11大促結束后,回顧整個過程,分析SLA的達成情況,找出改進的空間。將這些經驗和教訓應用到下一年的備戰中,持續提升服務質量。

附:1)SLO文檔示例

服務概述

常見的有API,MQ消息

圖片圖片


說明和警告

?請求指標是在負載均衡器上測量的。此度量可能無法準確度量用戶請求未到達負載均衡器的情況。

?我們僅將HTTP 5XX狀態或者約定的API Response里的Code錯誤編碼消息視為錯誤代碼;其他一切都算成功。

2)云服務級別指標

圖片圖片

責任編輯:武曉燕 來源: 京東云開發者
相關推薦

2018-07-11 06:06:20

物流倉儲運維數據庫

2024-09-19 08:49:13

2016-01-13 14:54:50

京東京東大腦

2015-11-11 09:39:05

京東11.11技術控

2023-12-04 16:18:30

2024-08-30 09:53:17

Java 8編程集成

2023-09-28 12:13:36

自然語言模型

2024-12-19 16:00:00

Pythonwhile 循環

2015-08-24 10:16:53

Google雷擊技術架構 分布式UPS

2019-01-08 09:34:05

蘇寧金融紅包流量

2025-03-27 04:10:00

2024-07-08 07:30:47

2018-06-21 08:20:24

京東數據庫架構運維秘訣

2018-03-14 08:10:44

深度學習

2025-04-11 09:57:16

2025-05-12 01:33:00

異步函數Promise

2024-09-23 20:11:47

2013-01-22 09:44:57

OpenStackKVM

2023-09-28 21:46:10

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品久久久久久久久久久久久 | 日韩黄色免费 | 日韩成人在线视频 | 影音先锋久久 | www.黄网 | 特级丰满少妇一级aaaa爱毛片 | 久久久亚洲一区 | 国产91观看 | 免费看国产a | 福利视频二区 | 国产精品成人国产乱一区 | 米奇7777狠狠狠狠视频 | 欧美精品在线播放 | 成人欧美一区二区 | 精品日韩一区 | 亚洲国产精品视频 | 天天干人人 | 欧美日韩精品久久久免费观看 | 国产九九九九 | 欧美精品一区二区三区蜜桃视频 | 超碰97干 | 精品亚洲一区二区三区四区五区高 | 一色桃子av一区二区 | 91久久精品国产91久久性色tv | 久久精品在线免费视频 | 亚州激情| 成人免费一区二区 | 亚洲高清视频在线 | 一区二区三区网站 | 国产在线不卡视频 | 婷婷综合久久 | 久久久免费在线观看 | 精品国产一区二区三区日日嗨 | 国产98色在线 | 日韩 | 91五月天| 国内自拍偷拍 | 日韩精品一区二区三区视频播放 | 日韩中文字幕 | 天天色天天射天天干 | 九九伦理电影 | 久草福利|