SLA (service level agreement):服務等級協議
指的是整個協議,協議的內容包含了SLI,SLO以及恢復的方式和時間等等一系列所構成的協議
這種協定可能是,如果服務失效、或者達不到預期的效果,該怎樣做。一般是賠償、退款,當然也有其他形式。一般來說,SRE是不參與SLA的制定,因為SLA更靠近商務層面或者產品設計層面。
比如谷歌搜素這項服務,並沒有暴露給用戶的SLI,但是卻有和全世界都簽訂協議,也就是SLA。(你注冊谷歌賬號時,一大堆的文字)
SLO(service level objective):服務等級目標
指的是目標,例如:qps 99.99% ,響應時間10ms等等
SLO是一組值的范圍,這個值就是由SLI定義的服務級別數值。自然的SLO定義就是,某SLI在正常情況下需要小於某值或者處於某個大小值之間。
選擇一個合適的SLO並不是一件容易的事情,當然一開始並不需要設定好這個范圍,比如說QPS,這個指標取決於你的用戶,而你是無法預先做出判斷的。(比如運維平台上線了某個服務,你可能預測這服務最后每天的使用量能達到100次,但實際並沒人用,因為可能用戶都不知道有這么一項功能)
確定一個SLO,和服務怎樣運行也有關系(how service to perform)
SLI(service level indicator):服務等級對象
指的是對象,例如:qps,響應時間,准確性,可用性,延遲,生產力等
不是所有的metric都視為SLI,選擇盡可能少的SLI,但這些SLI卻能說明服務是否穩定,可靠。
這些SLI應該:
用戶側系統(user-facing serving systems):可用性(a)延遲(latency)服務生產力(throughput)。換句話說:服務能響應用戶的請求嗎?響應要耗時多久?我們能處理多少請求?
存儲系統(storage systems):延遲,可用性和持久性。換句話說:成功寫數據需要多久?是否能正確獲取到想要的數據?
大數據系統(big data systems):對於數據處理管道(data processing pipeline),就需要去關注生產力與端對端的延遲(end-to-end latency)換句話說:有多少數據被處理?從獲取數據到處理完成耗時多少?