Netflix宣布開源其雲端閘道器Zuul 2,Netflix稱它為前門,所有流量請求必會經過該服務。Zuul 2作為Netflix最重要的基礎建設之一,現在Netflix內部運行超過80個Zuul 2叢集,向後端百項服務每秒發送一百萬次的請求,以服務1.25億會員的需求。

Zuul 2中,過濾器的前端與後端都設置了Netty處理程序,用來負責處理網路協定、網頁伺服器、連接管理以及代理工作。Netflix提到,Zuul的功能相當於在過濾器設置的邏輯。Netflix將Zuul 2不只使用在所有外部流量進入Netflix雲端服務的入口,而同時也用於路由內部流量。

負責處理入站流量的過濾器用於驗證、路由以及修飾請求。而端點過濾器用於回傳靜態回應以及代理後端服務的請求。而出站流量的過濾器則用於壓縮、指標或是新增刪除自訂義標頭等內容。

目前Zuul 2開源的核心功能包括HTTP/2與TLS伺服器協定。在靈活性功能方面,適應性重試功能(Adaptive Retries),是Netflix用來增加服務可用性以及靈活性的核心重試邏輯。後端服務並行保護功能,則可用來配置並行限制以避免後端服務過載。

另外,在運作的功能上,除了提供Request Passport以追蹤每一個請求的生命週期事件外,狀態類別(Status Categories)可以列舉請求的所有可能成功或失敗的狀態,而Request Attempts用於追蹤代理狀態,這個功能對於除錯重試以及路由特別有用。

還有一些功能這次未來得及開源,但將依計畫不久後釋出,其中包括Websocket/SSE,以及流量控管功能,防止來自惡意客戶端的DDoS攻擊,而Brownout filters則能禁用特定CPU資源密集的應用,以防止Zuul過載。最後,可配置路由提供使用者以檔案設定路由規則。

有幾項Zuul 2功能尚未開源,但是在Netflix內部服務是很重要的應用,供欲使用Zuul 2的企業參考。Netflix提到,合作夥伴最常使用的功能就是自助路由(Self Service Routing),他們為用戶提供應用程式與API,根據請求的URL、路徑、查詢參數或是標頭等資訊創建路由規則,並將這些規則發佈到各Zuul實體中。

另一個重要的功能便是靈活的負載平衡,Netflix致力於使負載平衡智慧化,當數量龐大的節點中,出現故障或是緩慢的節點,他們的演算法會自動繞過這些問題,維持服務的可用性以及品質。

由於Netflix的彈性架構,允許任何人都可以啟動容器叢集並置於Zuul之後,因此Netflix發現,他們需要一個自動檢測並查明後端錯誤的服務。透過Mantis即時事件串流,他們建立了異常狀態偵測,以匯總每項服務的錯誤率,並在服務出現問題時主動發出通知。


Advertisement

更多 iThome相關內容