Sping Cloud Gateway如何抗住億級流量?
分布式集群擴展
單機性能總有上限,千萬級并發(fā)必須依靠集群的無限伸縮能力。
單個 Gateway 節(jié)點承載極限有限(比如 10-20 萬 QPS),要達到千萬級必須依賴 分片+集群化。
圖片
Spring Cloud Gateway 可在 Kubernetes、Docker 或 VM 集群中運行,通過副本擴展來提高整體吞吐。
通過 Nginx、LVS、F5 或云廠商的 SLB/ELB,在入口層將請求分發(fā)到多個 Gateway 節(jié)點。
在不同可用區(qū)/地域部署 Gateway 集群,結(jié)合 DNS/Anycast 做就近接入。
響應式編程
在分布式微服務架構(gòu)中,網(wǎng)關承擔著流量接入、路由轉(zhuǎn)發(fā)、安全鑒權(quán)、限流熔斷等關鍵職責。
隨著業(yè)務規(guī)模擴大,網(wǎng)關需要能夠承受千萬級別的請求。
Spring Cloud Gateway(以下簡稱 SCG),基于 Reactor 的響應式編程模型,天然適合高并發(fā)場景。
SCG 基于 Project Reactor。它將請求處理流程視為一個數(shù)據(jù)流(Mono 或 Flux)。
網(wǎng)關中的所有操作,包括路由匹配、Filter 執(zhí)行和后端調(diào)用,都通過鏈式操作實現(xiàn)。
這確保了所有邏輯都是非阻塞的,網(wǎng)關線程發(fā)出請求后會立即釋放,處理其他請求,直到收到回調(diào)通知。
異步非阻塞架構(gòu)
傳統(tǒng)阻塞模型下,每個請求占用一個線程且在等待 I/O 時阻塞,線程數(shù)需線性擴展。
而異步非阻塞模型使用較少的線程即可承載大量并發(fā)請求。
圖片
Spring Cloud Gateway 采用 Netty 異步非阻塞架構(gòu)。
請求從接收、路由、轉(zhuǎn)發(fā)到響應,全鏈路異步化。
I/O 操作不再占用線程等待,而是通過 回調(diào)+Future 機制完成。
同等硬件下,能支撐數(shù)倍甚至數(shù)十倍的并發(fā)請求。
限流熔斷
在千萬級并發(fā)下,部分請求必然失敗或超時,如果不做治理,容易產(chǎn)生 級聯(lián)雪崩。
核心手段:
圖片
熔斷:當某個下游服務失敗率過高時,網(wǎng)關快速失敗,避免拖垮更多線程。
限流:對 API、用戶、IP 做速率限制,常見算法有 令牌桶、漏桶。
降級:非關鍵接口返回兜底響應(緩存/默認值),核心服務優(yōu)先保證可用。
實現(xiàn)方式:
使用 Spring Cloud Gateway 內(nèi)置的 Redis RateLimiter,基于 Lua 腳本保證分布式原子性。
集成 Sentinel / Resilience4j,實現(xiàn)熔斷、隔離艙、限流策略。



























