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



























