需要 Service Mesh 嗎?如果你的東西向流量正深陷限流策略不一、鑑權標準分裂、可觀測性盲區的困境,本能反應往往是上 Istio。但對大多數團隊來說,這個決定為時過早——在關鍵網路節點部署集中式閘道器,無需 per-pod sidecar,也不必養一支專職平臺團隊來維護控制面,就能落地同等的流量策略。某大型 OTA 平臺在做出這一切換後,閘道器運維從 7 人收斂至 1 人。

下文將剖析東西向流量治理的四大痛點,對比 Service Mesh 與集中式閘道器的架構選型,然後沿著一次內部 API 變更的全生命週期——從許可權邊界到一鍵回滾——展示 OpenResty Edge 在每個環節的具體做法。

東西向流量與南北向有何不同

在探討具體選型前,我們需要釐清南北向(外部)與東西向(內部)流量治理在架構語境下的核心差異。內部流量閘道器絕不是外網 WAF 或傳統負載均衡器在內網的簡單映象。

外部閘道器建立在“零信任”的初始假設上,主要解決邊界防禦(DDoSWAF)與接入加速問題。而內部流量的挑戰在於複雜的拓撲關係與服務間契約的管理

評估維度外部流量治理(南北向)內部流量治理(東西向)
拓撲結構相對扁平(客戶端 -> 閘道器 -> 業務層)深度網狀交織(微服務間的多級呼叫)
信任模型預設不信任(Default Deny)歷史包袱導致的預設信任(隱患根源)
治理重心邊界安全、高可用性、連線解除安裝路由排程、細粒度鑑權、服務降級與熔斷
流量特徵突發性高併發、主要為 HTTP/S 協議協議多樣(RPC/HTTP)、高頻短時與長連線並存
變更頻次相對低頻、由 SRE/網路團隊主導極高頻,隨各敏捷團隊的業務迭代持續變更

傳統基於 nginx.conf 靜態檔案或人工維護內網路由的模式,其“集中式、低頻變更”的設計,已經與內部服務“管理主體分散、高頻釋出”的客觀規律產生了不可調和的矛盾。

缺乏統一治理的東西向流量會出甚麼問題

透過對諸多企業基礎架構演進路徑的觀察,內部流量治理的缺失通常會演化為以下四個層面的系統性風險。

隱式信任與橫向移動風險

在單體或早期服務化階段,“內網即安全邊界”是一個妥協性的假設。但在雲原生環境下,這個假設極度脆弱。

風險敞口:一旦某個邊緣應用因第三方元件漏洞(如 Log4j2、Fastjson)被攻破,攻擊者便能以該節點為跳板,在內網發起橫向移動(Lateral Movement)。由於內網服務間普遍缺乏基於身份的細粒度訪問控制(RBAC/ABAC),核心資料服務往往對所有內網 IP 處於裸奔狀態。這不僅是重大的資料安全隱患,也無法滿足金融、醫療等行業日益嚴格的合規審計要求。

限流、鑑權、重試邏輯的碎片化

微服務的自治性不應擴大到非功能性需求領域。如果缺乏統一的資料面代理,各團隊就會被迫在業務程式碼中重複實現閘道器層能力:

  • 限流演算法不一:漏桶、令牌桶或簡單的計數器混用。
  • 重試風暴:缺乏全域性協調的區域性重試策略,在下游服務效能劣化時,極易引發重試風暴(Retry Storm),徹底壓垮整個系統。
  • 鑑權標準分裂:JWT、定製 Header 或無鑑權並存。

這種“煙囪式”的建設不僅推高了整體研發成本,更因實現標準的參差不齊,給系統底盤埋下了大量穩定性隱患。

沒有灰度和回滾的釋出

內部核心 API 的迭代頻次極高。在缺乏動態路由和流量分割能力的基礎設施中,每次釋出都近乎於一次“全量試錯”。

缺乏動態路由和流量分割能力,每次釋出都近乎於一次"全量試錯"。回滾成本高昂,工程師對釋出產生畏懼感,最終拖慢了整體的交付速率。

可觀測性孤島拉高 MTTR

當故障發生時,排查效率直接取決於遙測資料(Telemetry Data)的完備性。 在碎片化的架構中:沒有統一的日誌 Schema,缺乏貫穿全鏈路的 Trace ID 注入,指標收集(Metrics)粒度不一。排查一個跨三個服務的呼叫超時,需要運維人員在多個 Kibana/Grafana 面板中人肉對齊時間戳。平均故障恢復時間(MTTR)居高不下,其本質是工具鏈的缺失,而非工程師經驗不足。

Service Mesh vs. 集中式閘道器:工程取捨

在解決內部流量問題時,業界通常有兩種演進方向:基於 Sidecar 的 Service Mesh(如 Istio)和集中式/微隔離閘道器。

Service Mesh 將代理下沉到每個 Pod 級別,實現了極致的去中心化,但代價是極高的控制面運維複雜度(如 Istiod 效能瓶頸)以及不可忽視的網路延遲(在經典 sidecar 模式下,一跳呼叫需經過兩次 Envoy 代理轉發)。

對於絕大多數尚未具備頂尖基礎架構團隊的企業而言,OpenResty Edge 所代表的集中式、高度可程式設計的分散式閘道器提供了一條更具投入產出比(ROI)的路徑:它更適合存在明確服務域邊界(Domain Boundary)的場景。透過在關鍵網路節點部署叢集,既實現了統一管控,又避免了 Sidecar 模式帶來的認知負擔和計算資源浪費。

這條路線還有一個常被低估的優勢:內部流量與對外業務入口共用同一套控制面。同一套 OpenResty Edge 平臺,既能承擔南北向的接入層職責——私有 CDNWAF 防護與對外 API 閘道器——也能下沉到內網承擔東西向治理。南北向與東西向的路由、鑑權、限流策略在同一個 Edge Admin 控制檯中管理,變更流程、許可權邊界與審計口徑天然對齊,無需為內網另建一套治理體系。這筆賬在人力緊張的中小型基礎架構團隊裡尤其顯著。

一次內部 API 變更在 OpenResty Edge 中的全生命週期

空談能力清單沒有意義。下面將沿著一次真實的內部 API 變更,在 OpenResty Edge 中走完完整流程——劃許可權、改配置、發 staging、放量、觀測、回滾——讓你看清內部流量治理的每一步在實際產品中如何運作。

第一步:劃定許可權邊界——誰能動這條配置

幾十條業務線共用一套內部閘道器時,第一道坎不是路由怎麼配,而是許可權:A 團隊不應該能改到 B 團隊的應用;共享環境裡“誰都能改、改完沒人知道”,本身就是事故之源。東西向流量“管理主體分散、高頻釋出”的特點,決定了許可權邊界必須先於一切配置存在。

OpenResty Edge 中,許可權由使用者組決定:系統內建 super admin、normal admin、normal user 三個組,使用者可同時屬於多個組。每個功能模組可以單獨配置讀寫許可權,並區分“能否檢視/修改其他人的資料”(Read All / Write All),還可限制最大記錄數與記錄型別。應用的建立者自動擁有該應用全部模組的許可權;其他團隊成員需要參與時,透過應用級的 User Access Control 顯式授權到單個應用。企業已有賬號體系可透過 LDAP 對接(支援 ldaps 與自動同步)直接複用。

配置變更的邊界從此等於組織邊界——越權與誤改從源頭堵住。具體配置步驟,請參考Web 控制檯的使用者管理和訪問控制

第二步:變更即釋出——每次修改可審查、可追溯

許多團隊至今仍靠人工修改 Nginx 配置加 reload 來切換內部流量:誰、在甚麼時候、為甚麼改了這一條,事後無從查起;而 reload 在高併發長連線下還會造成 worker 程序抖動與連線重置。

OpenResty Edge 把“改配置”和“配置生效”拆成了兩個動作:修改不會立即生效,控制檯會提示存在未釋出的變更(pending changes),必須經過釋出(Release)才會下發到閘道器節點;釋出時可以填寫本次變更的原因備註,便於日後檢索與審計。釋出後,路由、限流閾值、證書等絕大多數策略在資料面記憶體中熱更新生效,避免 reload 引發的連線閃斷——高頻變更不再是高風險動作。

具體的版本控制與釋出流程,請參考 OpenResty Edge 中 Gateway Config 的版本控制和釋出管理

第三步:先小範圍真實驗證——灰度閘道器節點

新路由、新限流規則一旦釋出即全網生效,等於拿生產環境當試驗場。

OpenResty Edge 支援把某個閘道器節點標記為灰度(Staging)節點:應用釋出時可以選擇只發布到 staging 節點,讓新配置先在小範圍真實流量上執行觀察;確認正常後,再發布到其餘叢集。被標記的節點在列表中帶有 Staging 標籤,一眼可辨。

具體操作請參考在 OpenResty Edge 中如何使用灰度閘道器伺服器

第四步:可控放量——灰度、A/B 測試與流量映象

staging 驗證透過,仍不該把核心內部 API 一刀切到新版本——呼叫量大的介面,從 1% 到 100% 的每一檔都值得可控。

透過頁面規則調整 upstream 權重,或基於特定 HTTP Header 等請求特徵把測試流量引向新版本,放量節奏完全由你掌握;A/B 測試的配置同樣納入版本控制,可審查、可回退。需要更強隔離時,還可以保留一組專屬閘道器節點承接 A/B 流量(見下文閘道器分割槽)。

如果希望新版本在正式接管業務之前先接受真實資料的檢驗,可以使用流量映象:在不影響生產主鏈路響應的前提下,閘道器在後臺非同步複製真實流量至預發環境。具體請參考 OpenResty Edge 映象請求功能讓安全與效能兼得

第五步:全程看得清——真實來源、動態指標與統一日誌

放量過程中的判斷依據是資料。但在 K8s 與多層代理(LB、Ingress、閘道器)之後,日誌裡記錄的往往全是代理或 Pod 的 IP,排障時對不上真實呼叫方,限流與鑑權也失去了準確的來源依據;而排查一次跨三個服務的呼叫超時,還要在多個面板中人肉對齊時間戳。

OpenResty Edge 在這一環提供三樣東西:

  • 真實客戶端 IP 還原:配置信任主機列表後,僅當 TCP 連線對端位於信任列表中時,才採用請求頭改寫來源 IP;客戶端 IP 來源支援從 X-Forwarded-For 頭提取真實 IP。在可信代理鏈路後準確還原真實來源,日誌、限流、鑑權從此都建立在真實身份之上。具體請參考在 OpenResty Edge 中精準還原真實的客戶端 IP 地址
  • 動態指標:用類 SQL 的語法(Metric SQL)實時定義和聚合業務指標——例如查詢某上游介面的 P99 延遲——無需改程式碼、無需重新部署。具體請參考如何在 OpenResty Edge 中使用標準動態指標,進階用法見自定義動態指標
  • 統一結構化日誌:閘道器是所有跨服務流量的必經之路,自動產出格式統一的結構化訪問日誌,消除各團隊日誌 Schema 的分裂;同時支援 OpenTelemetry 標準的 Trace ID 注入與透傳,與現有 APM 系統對接。日誌配置請參考在 OpenResty Edge 中配置閘道器的訪問日誌檔案

OpenResty Edge 動態指標儀表盤:狀態碼分佈、快取命中、Top 客戶端 IP 等指標實時聚合並自動重新整理

第六步:出了問題——一鍵回滾

放量中指標異常,此刻最重要的事只有一件:在最短時間內退回上一個已知良好的狀態。回滾成本越低,工程師越敢釋出。

OpenResty Edge 可以恢復到任意歷史 Release;revision 歷史是隻讀的、不可篡改,控制檯提供人類可讀的版本差異對比——回滾之前,你能確切知道將退掉哪些變更。配合前面的 staging 驗證與灰度放量,“小步釋出—出錯即退”形成完整閉環。回滾操作與版本對比同見版本控制和釋出管理

OpenResty Edge 的配置釋出模型:每次變更以版本形式提交(Commit)入庫,可隨時回滾(Revert)到舊版本

長期執行:健康檢查、熔斷與限流

變更之外,內部鏈路的日常韌性同樣需要統一兜底,而不是各業務自研一套參差不齊的容錯程式碼。這裡的容錯分兩層:閘道器對上游業務節點的容錯,以及控制面對閘道器節點自身的監控。先看前者:

  • 上游主被動健康檢查:閘道器結合主動探測與被動流量反饋,自動剔除異常的上游業務節點,保障高可用 SLA。
  • 熔斷與快速失敗:當上遊錯誤率或延遲觸發閾值時自動熔斷(Fail-Fast),防止下游執行緒池被耗盡、重試風暴壓垮系統。
  • 統一限流:在閘道器層以統一的演算法和自定義鍵實施限流,替代散落在各業務中的漏桶/令牌桶混雜實現。具體請參考在 OpenResty Edge 中限制請求速率

另一層是閘道器節點自身的健康:Edge Admin 控制面會持續探測各閘道器節點,探測失敗的節點在控制檯中被標紅告警,並自動從 DNS 解析中摘除,無需人工介入。具體請參考在 OpenResty Edge 中啟用閘道器伺服器的自動健康檢查

健康檢查失敗的閘道器節點在 OpenResty Edge 控制檯中被標紅,並自動從 DNS 解析中摘除

對於內部以 gRPC 為主的呼叫鏈路,閘道器原生支援 gRPC 代理,上述熔斷、健康檢查與限流能力同樣適用——這正是應對前文所述“協議多樣”這一東西向流量特徵的基礎。

多團隊共用一套閘道器——分割槽與許可權的雙重隔離

當多個敏捷團隊共用同一套閘道器基礎設施時,資源的爭搶和配置覆蓋是核心痛點。第一步的使用者組與應用級訪問控制解決的是邏輯隔離OpenResty Edge閘道器分割槽(Gateway Partition)進一步提供物理隔離:每臺閘道器節點在納管時歸屬且僅歸屬一個分割槽,不同分割槽擁有獨立的配置空間,變更只下發到本分割槽內的叢集與節點;指定應用可以只發布到指定分割槽,分割槽還可單獨配置埠、按埠開啟 Proxy Protocol。

各業務線在各自分割槽內維護獨立的應用、頁面規則與配額,在複用統一控制面的同時,避免跨團隊的配置誤覆蓋,並縮小故障爆炸半徑;也可以用一個專屬分割槽承接前文的 A/B 測試流量。分割槽與叢集的層級關係及配置實踐,可參考如何使用 OpenResty Edge 中的閘道器分割槽

閘道器分割槽與叢集的層級關係:每個分割槽包含若干閘道器叢集,不同分割槽的配置空間相互獨立

鑑權解除安裝與東西向零信任

在上述生命週期之外,安全基線值得單獨一提。將散落在業務線中的身份驗證邏輯上浮並解除安裝到閘道器層,是內部零信任架構(ZTA)平滑落地的第一步:服務間呼叫可做基於 JWT 的無狀態驗籤(如 OAuth2/OIDC 頒發的令牌),員工訪問可實施 OIDC 整合;對安全級別要求極高的核心鏈路,閘道器支援開啟雙向 TLS(mTLS),基於 x509 客戶端證書進行機器身份認證;OpenResty Edge 還支援基於 TLS 握手特徵的 JA4 指紋識別——即使雙方都持有合法證書,也能區分合法內部服務與異常客戶端,與 IP 白名單互補。安全防禦由此從“靜態 IP 白名單”演進為“動態身份與行為校驗”。

何時開始:三階段漸進路徑

解決複雜的技術債,切忌推倒重來。內部流量治理體系的建立,應該是一個“小步快跑、漸進增強”的過程。

這一路徑已有真實的工程資料印證:某擁有數千員工的 HR SaaS 平臺遷移至 OpenResty Edge 後,API 治理底座的 TCO 下降了 80%,配置生效時間由小時級縮短至分鐘級;某大型 OTA 平臺將閘道器運維從 7 人日常輪值收斂至 1 人負責,其餘人力釋放到產品開發;去哪兒網在日均百億級呼叫體量下實現了配置變更對連線的“零損耗”,維護成本降低 90%。這些收益並非來自一次性的大規模重構,而是透過分階段、有節奏的漸進落地積累而來。

所謂“漸進增強”,在實踐中可拆解為三個遞進階段:

  1. 第一階段:重點突破可觀測性與安全基線。在閘道器層統一切入 JWT 鑑權、真實客戶端 IP 還原與標準日誌採集,無需研發側改動一行程式碼,快速消除“系統裸奔”與“排查黑盒”的狀態。
  2. 第二階段:推廣流量切分與容錯降級。結合 CI/CD 平臺,把“staging 驗證—灰度放量—一鍵回滾”固化為團隊的標準釋出流程,控制爆炸半徑。
  3. 第三階段:落地零信任與深度多租戶。在高敏感服務節點推行 mTLS,透過閘道器分割槽將不同業務線的物理節點與配置空間隔離開;將路由、鑑權與限流等策略的統一管控固化為組織級規範,依託 Edge Admin 的審查釋出與 API,與現有運維流程銜接。

將底層網路與流量排程的複雜性下沉至統一的基礎設施層,是雲原生演進的必然趨勢。當你不再需要依賴開發人員的自覺性來保證系統的穩定與安全時,微服務架構才能真正釋放它的業務敏捷性。

如果你正在評估企業內部流量管理的解決方案,歡迎聯絡 OpenResty Edge 團隊,獲取針對你們具體場景的技術諮詢。

常見問題解答(FAQ)

Q: 內部(東西向)閘道器和對外(南北向)閘道器能共用一套系統嗎? A: 可以。OpenResty Edge 用同一套控制面同時納管南北向與東西向流量,變更流程、許可權邊界與審計口徑完全一致;需要隔離時,可透過閘道器分割槽把對內、對外應用分別落在不同的物理節點組上。

Q: 引入集中式內部閘道器,和 Service Mesh 衝突嗎? A: 不衝突。兩者並不互斥:Service Mesh 追求 Pod 級的極致去中心化,代價是控制面運維複雜度和 sidecar 帶來的額外延遲;對多數存在明確服務域邊界的企業,在關鍵網路節點部署集中式閘道器的投入產出比更高,也可以作為日後走向更細粒度治理的務實起點。

Q: 內部流量治理應該從哪一步開始落地? A: 建議從可觀測性與安全基線起步——在閘道器層統一接入日誌採集、真實 IP 還原與 JWT 鑑權,業務程式碼零改動即可見效。完整的三階段遞進路徑請參見上文結語。

Q: 甚麼情況下不應該用 Service Mesh? A: 當你的服務存在明確的域邊界,且沒有專職平臺團隊來運維 mesh 控制面時。在關鍵網路節點部署集中式閘道器,無需 per-pod sidecar,也沒有 Istiod 的運維負擔,就能落地限流、鑑權、灰度釋出和可觀測性等流量策略。先從這裡開始,只有當確實需要 Pod 級去中心化時,再考慮 mesh。

Q: 微服務一定需要 Service Mesh 嗎? A: 不一定。微服務的許多痛點——限流策略不一、鑑權標準分裂、無灰度回滾、可觀測性孤島——本質上是基礎設施治理的缺失,並非必須靠 per-pod sidecar 來解決。集中式閘道器能以更低的運維成本解決這些問題。

Q: 不用 Service Mesh,如何治理東西向流量? A: 在關鍵內網節點部署集中式可程式設計閘道器,使其成為服務間呼叫的必經資料面,統一執行路由、JWT/mTLS 鑑權、限流、熔斷和結構化日誌——全部由一個同時覆蓋南北向流量的控制面管理。配置變更在資料面記憶體中熱更新,連線零損耗,徹底消除手工維護 Nginx 時 reload 引發的連線閃斷。

關於 OpenResty Edge

OpenResty Edge 是一款專為微服務和分散式流量架構設計的全能型閘道器軟體,由我們自主研發。它集流量管理、私有 CDN 構建、API 閘道器、安全防護等功能於一體,幫助您輕鬆構建、管理和保護現代應用程式。OpenResty Edge 擁有業界領先的效能和可擴充套件性,能夠滿足高併發、高負載場景下的苛刻需求。它支援排程 K8s 等容器應用流量,並可管理海量域名,輕鬆滿足大型網站和複雜應用的需求。

關於作者

章亦春是開源 OpenResty® 專案創始人兼 OpenResty Inc. 公司 CEO 和創始人。

章亦春(Github ID: agentzh),生於中國江蘇,現定居美國灣區。他是中國早期開源技術和文化的倡導者和領軍人物,曾供職於多家國際知名的高科技企業,如 Cloudflare、雅虎、阿里巴巴, 是“邊緣計算”、“動態追蹤”和“機器程式設計”的先驅,擁有超過 22 年的程式設計及 16 年的開源經驗。作為擁有超過 4000 萬全球域名使用者的開源專案的領導者。他基於其 OpenResty® 開源專案打造的高科技企業 OpenResty Inc. 位於美國矽谷中心。其主打的兩個產品 OpenResty XRay(利用動態追蹤技術的非侵入式的故障剖析和排除工具)和 OpenResty Edge(最適合微服務和分散式流量的全能型閘道器軟體),廣受全球眾多上市及大型企業青睞。在 OpenResty 以外,章亦春為多個開源專案貢獻了累計超過百萬行程式碼,其中包括,Linux 核心、Nginx、LuaJITGDBSystemTapLLVM、Perl 等,並編寫過 60 多個開源軟體庫。

關注我們

如果您喜歡本文,歡迎關注我們 OpenResty Inc. 公司的部落格網站 。也歡迎掃碼關注我們的微信公眾號:

我們的微信公眾號

翻譯

我們提供了英文版原文和中譯版(本文)。我們也歡迎讀者提供其他語言的翻譯版本,只要是全文翻譯不帶省略,我們都將會考慮採用,非常感謝!