系列文章:web
總目錄索引:九析帶你輕鬆完爆 istio 服務網格系列教程瀏覽器
目錄網絡
1 前言
架構
2 邀約
ide
3 上章總結spa
4 監聽器架構設計
4.1 TCP 監聽器設計
4.2 UDP 監聽器代理
1 前言
orm
若是你對博客有任何疑問,請告訴我。
2 邀約
你能夠從 b 站搜索 「九析」,獲取免費的、更生動的視頻資料:
3 上章總結
上節介紹了 Envoy 的基礎配置信息,以下圖所示:
上面配置信息重點介紹了兩塊內容,管理信息(admin 部分)和靜態配置信息(static_resources 部分)。管理信息包括 Envoy 的 web 管理控制檯。在用 Docker 運行時可對外開放 9901 端口(並對全部客戶端可見,即 address 爲 0.0.0.0)。關於如何運行 Envoy 可參考我上一篇文章,輕鬆完爆就是。運行後的結果以下圖所示:
從上圖可知,對外服務端口 9901 已經開啓。打開瀏覽器訪問,以下圖所示:
靜態配置信息主要包括兩部份內容,分別是監聽器(listener,今天介紹的主角)和集羣(cluster),以下圖所示:
listener 是 Envoy 對外提供的監聽端口,默認 10000。客戶端經過此端口能夠與 Envoy 創建通信,獲取鏈接(connection)。此外,在監聽器上還可設置過濾器鏈(filter_chains),鏈上設置多過濾器,這樣的設置可保證對進入 Envoy 的網絡流量(請求)進行相應的處理,好比:上圖就設置了http 過濾器,即:進入 Envoy 的全部 http 網絡流量,都將被路由到集羣(clusters)配置中,在集羣(clusters)配置了 http 網絡流量最終流向端點(endpoints,即 baidu.com)。整個過程如圖所示:
4 監聽器
Envoy 配置在單個進程中支持任意數量的監聽器(listener)。Envoy 支持 TCP 和 UDP 的監聽器。
4.1 TCP 監聽器
監聽器上能夠配置一系列的過濾器構成的鏈,而且根據匹配條件來選擇某個鏈。單個過濾器鏈由一個或多個 L3 / L4 過濾器組成。當監聽器上收到鏈接時,將選擇匹配的過濾器鏈,實例化本地過濾器,並開始處理後續事件。這樣通用的監聽器體系架構設計使得 Envoy 能夠執行絕大多數的代理任務(好比,速率限制、TLS 客戶端身份認證、HTTP 鏈接管理、MongoDB 嗅探、原始 TCP 代理)等。
如上可知,監聽器能夠配置監聽過濾器。這些過濾器在網絡過濾器(之後會講)以前進行處理。而且監聽過濾器還能夠操做鏈接(connection)的元數據,這一般會影響之後的過濾器(filter)、集羣(cluster)如何處理該鏈接。
監聽器也能夠經過監聽器發現服務(LDS)動態獲取。
有關監聽器的詳細配置,請點擊這裏。
4.2 UDP 監聽器
Envoy 還支持 UDP 監聽器,尤爲是 UDP 監聽器過濾器。每一個監聽器過濾器都會處理工做進程在監聽器端口上監聽的每一個 UDP 數據報。實際上,UDP 監聽器配置有 SO_REUSEPORT 內核選項(該選項做用是能夠將多個進程綁定在同一個端口上),這將致使內核將每一個 UDP 四元組一致地散列到同一個工做程序。若是須要,這可以使 UDP 監聽器過濾器面向「會話」。
自此,九析帶你輕鬆完爆 Envoy 監聽器簡介,有關監聽器更多的內容,請查看本人接下來的文章。