Mixer 介面卡模型
提供 Mixer 外掛架構的概述。
Istio 0.2 引入了新的 Mixer 介面卡模型,旨在提高 Mixer 處理各種基礎設施後端的靈活性。本文旨在將介面卡模型置於上下文中,並解釋其工作原理。
為什麼需要介面卡?
基礎設施後端提供用於建構服務的支援功能。它們包括存取控制系統、遙測擷取系統、配額執行系統、計費系統等等。服務傳統上直接與這些後端系統整合,建立硬耦合並加入特定的語義和使用選項。
Mixer 作為 Istio 和開放式基礎設施後端之間的一個抽象層。在網格內運行的 Istio 元件和服務可以與這些後端互動,而不會與後端的特定介面耦合。
除了將應用程式層級程式碼與基礎設施後端的詳細資訊隔離之外,Mixer 還提供了一個中介模型,允許運營商在應用程式程式碼和後端之間注入和控制策略。運營商可以控制哪些資料報告給哪個後端,諮詢哪個後端進行授權等等。
鑑於個別基礎設施後端各自具有不同的介面和操作模型,Mixer 需要自訂程式碼來處理每個後端,我們將這些自訂程式碼包稱為介面卡。
介面卡是直接連結到 Mixer 二進位檔中的 Go 套件。如果預設的介面卡集不足以滿足特定使用案例,可以很簡單地建立連結特定介面卡的自訂 Mixer 二進位檔。
理念
Mixer 本質上是一個屬性處理和路由機器。代理伺服器在執行前提條件檢查和遙測報告時,將屬性發送給 Mixer,Mixer 將其轉換為對介面卡的一系列呼叫。運營商提供配置,描述如何將傳入的屬性對應到介面卡的輸入。
配置是一項複雜的任務。事實上,證據顯示絕大多數服務中斷是由配置錯誤引起的。為了幫助解決這個問題,Mixer 的配置模型強制執行許多旨在避免錯誤的約束。例如,配置模型使用強型別來確保只有有意義的屬性或屬性表達式才能在任何給定的上下文中使用。
處理器:配置介面卡
Mixer 使用的每個介面卡都需要一些配置才能操作。通常,介面卡需要它們的後端 URL、憑證、快取選項等等。每個介面卡透過 protobuf 訊息定義它需要的確切配置資料。
您可以透過為每個介面卡建立處理器來配置它們。處理器是一種配置資源,它表示一個完全配置好可以使用的介面卡。單個介面卡可以有多個處理器,使其可以在不同的場景中重複使用介面卡。
範本:介面卡輸入架構
Mixer 通常對每個傳入網格服務的請求呼叫兩次,一次用於前提條件檢查,一次用於遙測報告。對於每次此類呼叫,Mixer 都會呼叫一個或多個介面卡。不同的介面卡需要不同的資料作為輸入才能完成它們的工作。記錄介面卡需要一個日誌條目,指標介面卡需要一個指標,授權介面卡需要憑證等。Mixer 範本用於描述介面卡在請求時使用的確切資料。
每個範本都指定為 protobuf 訊息。單個範本描述在執行時傳遞給一個或多個介面卡的一組資料。任何給定的介面卡都可以設計為支援任意數量的範本,介面卡支援的特定範本由介面卡開發人員確定。
metric
和 logentry
是 Istio 中使用的兩個最重要的範本。它們分別表示將單個指標和單個日誌條目報告給適當後端的有效負載。
實例:屬性對應
您可以透過建立實例來控制哪些資料傳遞給個別介面卡。實例控制 Mixer 如何使用代理伺服器傳遞的屬性來建立可以路由到不同介面卡的個別資料包。
建立實例通常需要使用屬性表達式。這些表達式的目的是使用任何屬性或文字值來產生可以分配給實例欄位的結果。
每個實例欄位都有一個類型,如範本中所定義,每個屬性都有一個類型,每個屬性表達式都有一個類型。您只能將類型相容的表達式分配給任何給定的實例欄位。例如,您不能將整數表達式分配給字串欄位。這種強型別旨在最大限度地減少建立虛假配置的風險。
規則:將資料傳遞給介面卡
最後一個拼圖是告訴 Mixer 何時將哪些實例發送到哪個處理器。這是透過建立規則來完成的。每個規則都識別一個特定的處理器以及要發送到該處理器的一組實例。每當 Mixer 處理傳入的呼叫時,它都會呼叫指示的處理器,並為其提供特定的實例集以進行處理。
規則包含匹配述詞。述詞是一個屬性表達式,它返回 true/false 值。只有當其述詞表達式返回 true 時,規則才會生效。否則,就像該規則不存在一樣,並且不會呼叫指示的處理器。
未來
我們正在努力改進使用和開發介面卡的端對端體驗。例如,計劃推出多個新功能,使範本更具表現力。此外,表達式語言正在大幅增強,使其更加強大和完善。
從長遠來看,我們正在評估支援未直接連結到主 Mixer 二進位檔中的介面卡的方法。這將簡化部署和組成。
結論
更新後的 Mixer 介面卡模型旨在提供一個靈活的框架,以支援開放式基礎設施後端集。
處理器為個別介面卡提供配置資料,範本確定不同的介面卡在執行時想要使用哪種資料,實例讓運營商準備此資料,規則將資料導向一個或多個處理器。
您可以在此處了解有關 Mixer 整體架構的更多資訊,並在此處了解有關範本、處理器和規則的詳細資訊。您可以在 Bookinfo 範例此處找到許多 Mixer 配置資源的範例。