《深度剖析什么是 SLI、SLO和SLA?》要點:
本文介紹了深度剖析什么是 SLI、SLO和SLA?,希望對您有用。如果有疑問,可以聯系我們。
SLO和SLA是大家常見的兩個名詞:服務等級目標和服務等級協議.
云計算時代,各大云服務提供商都發布有自己服務的SLA條款,比如Amazon的EC2和S3服務都有相應的SLA條款.這些大公司的SLA看上去如此的高達上,一般是怎么定義出來的呢?本文就嘗試從技術角度解剖一下SLA的制定過程.
說SLA不能不提SLO,這個是眾所周知的,但是還有一個概念知道的人就不多了,那就是SLI(Service Level Indicator),定義一個可執行的SLA,好的SLO和SLI是必不可少的.
再有就是SLI/SLO/SLA都是和服務聯系在一起的,脫離了服務這三個概念就沒有什么意義了.
什么是服務?
簡單說就是一切提供給客戶的有用功能都可以稱為服務.
服務一般會由服務提供者提供,提供這個有用功能的組織被稱為服務提供者,通常是人加上軟件,軟件的運行需要計算資源,為了能對外提供有用的功能軟件可能會有對其他軟件系統的依賴.
客戶是使用服務提供者提供的服務的人或公司.
SLI是經過仔細定義的測量指標,它根據不同系統特點確定要測量什么,SLI的確定是一個非常復雜的過程.
SLI的確定需要回答以下幾個問題:
下面通過一個例子來說明一下:hotmail的downtime SLI
SLO(服務等級目標)指定了服務所提供功能的一種期望狀態.SLO里面應該包含什么呢?所有能夠描述服務應該提供什么樣功能的信息.
服務提供者用它來指定系統的預期狀態;開發人員編寫代碼來實現;客戶依賴于SLO進行商業判斷.SLO里沒有提到,如果目標達不到會怎么樣.
SLO是用SLI來描述的,一般描述為:
比如以下SLO:
設置SLO時的幾個最佳實踐:
如果Service是第一次設置SLO,可以遵循以下原則
設置SLO時的目標依賴于系統的不同狀態(conditions),根據不同狀態設置不同的SLO:總SLO = service1.SLO1 weight1 + service2.SLO2 weight2 + …
為什么要有SLO,設置SLO的好處是什么呢?
SLO設好了,怎么保證能夠達到目標呢?
需要一個控制系統來:
該控制系統需要重復的執行以上動作,以形成一個標準的反饋環路,不斷的衡量和改進SLO/服務本身.
我們討論了目標以及目標是怎么測量的,還討論了控制機制來達到設置的目標,但是如果因為某些原因,設置的目標達不到該怎么辦呢?
也許是因為大量的新增負載;也許是因為底層依賴不能達到標稱的SLO而影響上次服務的SLO.這就需要SLA出場了.
SLA是一個涉及2方的合約,雙方必須都要同意并遵守這個合約.當需要對外提供服務時,SLA是非常重要的一個服務質量信號,需要產品和法務部門的同時介入.
SLA用一個簡單的公式來描述就是: SLA = SLO + 后果
SLA是一個很好的工具,可以用來幫助合理配置資源.一個有明確SLA的服務最理想的運行狀態是:增加額外資源來改進系統所帶來的收益小于把該資源投給其他服務所帶來的收益.
一個簡單的例子就是某服務可用性從99.9%提高到99.99%所需要的資源和帶來的收益之比,是決定該服務是否應該提供4個9的重要依據.
原文作者:呂宏利