當前位置:
首頁 > 最新 > Envoy 架構概覽(1):術語,線程模型,監聽器和網路(L3/L4)過濾器和HTTP連接管理

Envoy 架構概覽(1):術語,線程模型,監聽器和網路(L3/L4)過濾器和HTTP連接管理

術語

在我們深入到主要的體系結構文檔之前,有一些定義。有些定義在行業中有些爭議,但是它們是Envoy在整個文檔和代碼庫中如何使用它們的,因此很快就會出現。

主機:能夠進行網路通信的實體(在手機,伺服器等上的應用程序)。在這個文檔中,主機是一個邏輯網路應用程序。一個物理硬體可能有多個主機上運行,只要他們可以獨立定址。

下游:下游主機連接到Envoy,發送請求並接收響應。

上游:上游主機接收來自Envoy的連接和請求並返迴響應。

偵聽器:偵聽器是可以被下遊客戶端連接的命名網路位置(例如,埠,unix域套接字等)。 Envoy公開一個或多個下游主機連接的偵聽器。

群集:群集是Envoy連接到的一組邏輯上相似的上游主機。 Envoy通過服務發現發現一個集群的成員。它可以通過主動運行狀況檢查來確定集群成員的健康狀況。 Envoy將請求路由到的集群成員由負載平衡策略確定。

網格:協調一致以提供一致的網路拓撲的一組主機。在本文檔中,「Envoy mesh」是一組Envoy代理,它們構成了由多個不同的服務和應用程序平台組成的分散式系統的消息傳遞基礎。

運行時配置:與Envoy一起部署的帶外實時配置系統。可以更改配置設置,這將影響操作,而無需重啟Envoy或更改主配置。

線程模型

Envoy使用多線程體系結構的單個進程。 一個主線程式控制制各種零星的協調任務,而一些工作線程執行監聽,過濾和轉發。 一旦一個連接被一個監聽器接受,這個連接將其生命周期的其餘部分花費在一個工作者線程上。 這使得大多數Envoy在很大程度上是單線程的(令人尷尬的並行),而在工作線程之間有少量更複雜的代碼處理協調。 通常Envoy被寫為100%非阻塞,對於大多數工作負載,我們建議將工作線程的數量配置為等於機器上硬體線程的數量。

監聽器

Envoy配置支持單個進程中的任意數量的監聽器。 一般來說,我們建議每台機器運行一個Envoy,而不管配置的偵聽器的數量是多少。 這樣可以使操作更簡單,統計也更簡單。 目前Envoy只支持TCP偵聽器。

每個監聽器都獨立配置一定數量的網路級別(L3 / L4)過濾器。 當偵聽器接收到新連接時,配置的連接本地過濾器堆棧將被實例化並開始處理後續事件。 通用偵聽器體系結構用於執行Envoy用於的大部分不同代理任務(例如,速率限制,TLS客戶機認證,HTTP連接管理,MongoDB嗅探,原始TCP代理等)。

偵聽器也可以通過偵聽器發現服務(LDS)動態獲取。

監聽器配置。

網路(L3 / L4)過濾器

如監聽器部分所述,網路級別(L3 / L4)過濾器構成Envoy連接處理的核心。過濾器API允許將不同的過濾器組混合併匹配並附加到給定的監聽器。有三種不同類型的網路過濾器:

讀取:當Envoy從下游連接接收數據時,會調用讀取過濾器。

寫入:當Envoy要將數據發送到下游連接時,將調用寫入過濾器。

讀取/寫入:當Envoy從下游連接接收數據並且要將數據發送到下游連接時,都會調用讀取/寫入過濾器。

用於網路級過濾器的API相對簡單,因為最終過濾器在原始位元組和少量連接事件(例如,TLS握手完成,連接本地或遠程斷開連接等)上操作。鏈中的過濾器可以停止並隨後繼續迭代以進一步過濾。這可以實現更複雜的場景,例如調用速率限制服務等。Envoy已經包含了多個網路級別的過濾器,這些過濾器在此體系結構概述以及配置參考中都有記錄。

HTTP連接管理

HTTP是現代服務導向架構的關鍵組件,Envoy實現了大量的HTTP特定功能。 Envoy有一個內置的網路級過濾器,稱為HTTP連接管理器。該過濾器將原始位元組轉換為HTTP級別消息和事件(例如,接收到的頭部,接收到的主體數據,接收的尾部等)。它還處理所有HTTP連接和訪問記錄,請求ID生成和跟蹤,請求/響應頭處理,路由表管理和統計等請求。

HTTP連接管理器配置。

HTTP協議

Envoy的HTTP連接管理器對HTTP / 1.1,WebSockets和HTTP / 2有本地支持。它不支持SPDY。Envoy的HTTP支持被設計為首先是一個HTTP / 2多路復用代理。在內部,使用HTTP / 2術語來描述系統組件。例如,HTTP請求和響應發生在一個流上。編解碼器API用於將不同的有線協議轉換為針對流,請求,響應等的協議不可知形式。在HTTP / 1.1的情況下,編解碼器將協議的串列/流水線功能轉換為看起來像HTTP / 2到更高層。這意味著大多數代碼不需要了解流是源於HTTP / 1.1還是HTTP / 2連接。

HTTP頭消毒

HTTP連接管理器出於安全原因執行各種頭部消毒操作。

路由表配置

每個HTTP連接管理器過濾器都有一個關聯的路由表。路由表可以通過以下兩種方式之一來指定:

靜態。

動態通過RDS API。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 智能時刻 的精彩文章:

物聯網和安全:數十億設備準備就緒,但業務很少
你可以用區塊鏈做什麼?這裡有4個想法要考慮

TAG:智能時刻 |