基于云原生網(wǎng)關(guān)的流量防護(hù)實(shí)踐
涂鴉 阿里云云原生 2023-08-17 18:31 發(fā)表于浙江
背景
Cloud Native
(相關(guān)資料圖)
在分布式系統(tǒng)架構(gòu)中,每個(gè)請求都會(huì)經(jīng)過很多層處理,比如從入口網(wǎng)關(guān)再到 Web Server 再到服務(wù)之間的調(diào)用,再到服務(wù)訪問緩存或 DB 等存儲(chǔ)。在下圖流量防護(hù)體系中,我們通常遵循流量漏斗原則進(jìn)行流量防護(hù)。在流量鏈路的每一層,我們都需要進(jìn)行針對性的流量防護(hù)與容錯(cuò)手段,來保障服務(wù)的穩(wěn)定性;同時(shí),我們要盡可能地將流量防護(hù)進(jìn)行前置,比如將一部分 HTTP 請求的流量控制前置到網(wǎng)關(guān)層,提前將一部分流量進(jìn)行控制,這樣可以避免多余的流量打到后端,對后端造成壓力同時(shí)也造成資源的浪費(fèi),為此,在網(wǎng)關(guān)側(cè)做流量防護(hù)是十分有必要的。
在傳統(tǒng)的流量網(wǎng)關(guān)場景下,對流量進(jìn)行訪問控制是一個(gè)很常見的需求。比如在 nginx 中,limit_req 就是一個(gè)最為常見的限流配置,而在 Envoy 中,也支持本地以及全局兩種模式的限流,但是二者均有其局限性。在功能的豐富度上,二者不及常見的限流組件開源項(xiàng)目,如 Sentinel 、Hystrix 等,在實(shí)際的使用場景中,實(shí)用性也很弱,比如不支持無性能損耗的集群限流等等。
云原生網(wǎng)關(guān)的流量防護(hù)功能,底層使用了 Sentinel 內(nèi)核,并做了一定的強(qiáng)化和改造。Sentinel 是以流量與容錯(cuò)為切入點(diǎn),從流量控制、不穩(wěn)定調(diào)用隔離、熔斷降級、熱點(diǎn)流量防護(hù)、系統(tǒng)自適應(yīng)保護(hù)、集群流控等多個(gè)維度來幫助保障服務(wù)和網(wǎng)關(guān)的穩(wěn)定性,同時(shí)提供秒級的流量監(jiān)控分析功能。其商業(yè)化產(chǎn)品不僅在阿里內(nèi)部淘寶、天貓等電商領(lǐng)域有著廣泛的應(yīng)用,在互聯(lián)網(wǎng)金融、在線教育、游戲、直播行業(yè)和其他大型政央企行業(yè)也有著大量的實(shí)踐。
云原生網(wǎng)關(guān)作為集安全、流量、微服務(wù)三位于一體的下一代云上網(wǎng)關(guān),在誕生之初,就被賦予了全場景使用的一個(gè)定位,為此流量防護(hù)也是其必備的一個(gè)能力,在流量防護(hù)能力上,具備以下優(yōu)勢:
具備與流行的流量防護(hù)項(xiàng)目如 Sentinel、Hystrix 等同等豐富的流量防護(hù)功能,并且還在不斷迭代更新中。 天然支持均攤式的集群流控,使得用戶無需關(guān)心網(wǎng)關(guān)以及 Upstream 服務(wù)的節(jié)點(diǎn)數(shù)。 提供配套的秒級監(jiān)控,并支持 QPS、拒絕 QPS 、異常 QPS 、RT 以及并發(fā)數(shù)等豐富的流量指標(biāo),同時(shí)支持歷史數(shù)據(jù)的查看,便捷地實(shí)現(xiàn)先觀測,再配防護(hù)規(guī)則的使用路徑。 流量防護(hù)規(guī)則秒級生效,配置防護(hù)規(guī)則后,無需等待,秒級生效。Sentinel 流量模型介紹
Cloud Native
如下圖所示,流量防護(hù)是指,針對不同的流量,設(shè)置一道適合的屏障策略,在該屏障的觀測下,一旦判定該流量不能被通過,應(yīng)該及時(shí)攔截,從而達(dá)到保護(hù)網(wǎng)關(guān)、以及后端 Upstream 服務(wù)的作用。
云原生網(wǎng)關(guān)目前支持 QPS 限流、并發(fā)控制、熔斷三種不同的流量防護(hù)能力, 本文將從這三個(gè)功能分別去闡述其具體的效果,以及適用的場景。
QPS 限流 這是流量防護(hù)最通用的一個(gè)場景,顧名思義,就是限制某個(gè)路由的流量,使其只能在一定的速率內(nèi)訪問網(wǎng)關(guān),防止某個(gè)路由流量激增,造成后端服務(wù)的崩潰。云原生網(wǎng)關(guān)不僅支持路由級別的限流,而且天然支持均攤式的集群流控,用戶無需關(guān)心網(wǎng)關(guān)節(jié)點(diǎn)的數(shù)量或者后端服務(wù)節(jié)點(diǎn)的數(shù)量,只需要配置一個(gè)總體的閾值,就可以輕松實(shí)現(xiàn)對某個(gè)路由的總體閾值限流。 并發(fā)控制 并發(fā)控制的具體實(shí)現(xiàn),是通過實(shí)時(shí)維護(hù)一個(gè)并發(fā)值(這個(gè)值指的是一秒內(nèi),該路由流量的最大并行值,即未完成的請求數(shù)量),一旦下一個(gè)請求超過了設(shè)定的閾值,就攔截該請求。該功能不同于 QPS 限流,即使是在 QPS 較低的場景下,也能保證關(guān)鍵的資源,不被持續(xù)累積的慢調(diào)用所占用,而導(dǎo)致服務(wù)不可用,比如后端 Upstream 服務(wù)的線程池以及數(shù)據(jù)庫資源等等,假設(shè)長期被占用,就會(huì)導(dǎo)致該 Upstream 服務(wù)出現(xiàn)異常。和 QPS 限流類似,云原生網(wǎng)關(guān)天然支持均攤式集群并發(fā)限流,只需配置一個(gè)總體的并發(fā)閾值,就可以實(shí)現(xiàn)對某個(gè)路由的總體并發(fā)控制。 熔斷 在 Sentinel 、Hystrix 等限流項(xiàng)目中,都能見到該功能,就如字面上的意義,熔斷是指,在路由的流量出現(xiàn)了某個(gè)異常狀態(tài),需要及時(shí)熔斷該流量,從而保證與該路由相關(guān) Upstream 服務(wù)能夠高效穩(wěn)定的運(yùn)行,而不受某個(gè)異常路由流量的影響。熔斷機(jī)制背后對應(yīng)熔斷器模型 (Circuit Breaker)。當(dāng)調(diào)用處于某種不穩(wěn)態(tài)(通常是出現(xiàn)異?;蚵{(diào)用)達(dá)到一定程度(通常關(guān)注比例而不是絕對量),熔斷開啟 (OPEN),所有的請求都會(huì) fallback 掉;過一段時(shí)間后進(jìn)入探測恢復(fù)階段 (HALF-OPEN),放過一定數(shù)量的請求,以這些請求的情況來 indicate 下游服務(wù)的恢復(fù)情況,若這些請求達(dá)到穩(wěn)態(tài),則恢復(fù)對應(yīng)調(diào)用 (CLOSED);否則重回熔斷狀態(tài),具體原理如下圖所示:
另外,云原生網(wǎng)關(guān)的流量防護(hù)能力底層是基于 Sentinel 的毫秒級滑動(dòng)窗口精確統(tǒng)計(jì),為此,云原生網(wǎng)關(guān)的流量防護(hù)功能界面也配套了一個(gè)秒級監(jiān)控系統(tǒng),可以通過 觀測=>發(fā)現(xiàn)問題=>創(chuàng)建防護(hù)規(guī)則 這個(gè)使用路徑去更好地在云原生網(wǎng)關(guān)上創(chuàng)建流量防護(hù)規(guī)則。
如何在云原生網(wǎng)關(guān)上進(jìn)行流量防護(hù)
Cloud Native
QPS 限流
下面,我們將動(dòng)手去實(shí)踐,在云原生網(wǎng)關(guān)上去使用上述的三大流量防護(hù)功能。
首先,進(jìn)入到云原生網(wǎng)關(guān)實(shí)例中的路由配置界面,選擇“策略配置”里的“限流”選項(xiàng),手動(dòng)給這個(gè)路由注入一個(gè) QPS 10000 左右的流量,在配套的秒級監(jiān)控可以看到 5 分鐘內(nèi)該路由的 QPS 情況。
在秒級監(jiān)控的下方,可以看到流控規(guī)則、并發(fā)規(guī)則,熔斷規(guī)則三個(gè)配置項(xiàng),首先先配置一條限流規(guī)則,具體參數(shù)如下圖所示:
打開開啟開關(guān)并點(diǎn)擊保存按鈕,就順利加入了一個(gè) QPS 限流策略,這個(gè)策略的含義是,當(dāng)路由流量的總 QPS 達(dá)到 5000 的時(shí)候,統(tǒng)計(jì)窗口內(nèi)下一個(gè)到來的流量會(huì)被拒絕,拒絕的行為是,返回一個(gè)HTTP包,返回碼是 429 ,內(nèi)容是一個(gè) JSON 格式的文本,內(nèi)容是:
{ "context": "just for test"}
此時(shí)再返回查看秒級監(jiān)控,就可以看到如下的曲線圖:
并發(fā)控制
并發(fā)規(guī)則也是類似,只不過,控制值由 QPS 變成并發(fā)數(shù),具體的參考配置參數(shù)如下:
返回查看秒級監(jiān)控,既可以看到以下的結(jié)果:
熔斷
熔斷規(guī)則的配置較為復(fù)雜,具體的含義可以查看配置界面的說明,具體的參考配置如下:
這個(gè)規(guī)則的具體含義是,在 20 秒的統(tǒng)計(jì)窗口內(nèi),從第 5 個(gè)請求之后,開始統(tǒng)計(jì)慢調(diào)用的比例,一旦比例超過 20% ,立馬熔斷該路由的流量,其中慢調(diào)用的定義為 RT 超過 1 ms 的請求。配置完成之后,監(jiān)控的表現(xiàn)如下圖的所示:
上述的例子只是為了演示效果,在實(shí)際生產(chǎn)環(huán)境中,需要更為謹(jǐn)慎的去定義慢調(diào)用比例以及熔斷時(shí)長等參數(shù),否則可能會(huì)導(dǎo)致后端服務(wù)整體不可用,是一個(gè)風(fēng)險(xiǎn)較高的流量防護(hù)功能。除了慢調(diào)用比例之外,還支持異常比例的熔斷條件判斷,異常的定義是指 HTTP 調(diào)用發(fā)生 5XX 的情況。
總結(jié)
Cloud Native
本文詳盡地介紹了如何在云原生網(wǎng)關(guān)上做流量防護(hù),包括在不同的場景下該配置何種防護(hù)規(guī)則,并給出了詳細(xì)的使用路徑,可以從中體驗(yàn)出云原生網(wǎng)關(guān)的流量防護(hù)功能相對于其它網(wǎng)關(guān)產(chǎn)品限流功能的優(yōu)勢。作為云上網(wǎng)關(guān)的核心功能之一,后續(xù)我們也會(huì)持續(xù)強(qiáng)化流量防護(hù)功能,也歡迎大家持續(xù)關(guān)注阿里云官網(wǎng)的 MSE 微服務(wù)引擎產(chǎn)品動(dòng)態(tài)。
關(guān)鍵詞:
您可能也感興趣:
今日熱點(diǎn)
為您推薦
從王思聰喊他“哥”,到站在街頭尋求安慰,任泉為何走到這一步?
文森特:談?wù)摶@球時(shí)很難不提到詹姆斯 我是看他和科比打球長大的
布?xì)W不參加力量武道大會(huì)或許是作者最明智的決定,因?yàn)椴細(xì)W參戰(zhàn)三分鐘就能搞定
排行
最近更新
- 基于云原生網(wǎng)關(guān)的流量防護(hù)實(shí)踐
- 實(shí)習(xí)季耳機(jī)推薦 韶音OpenFit不入耳耳機(jī)
- 中低端手機(jī)即將迎來價(jià)格戰(zhàn):降價(jià)幅度可能超兩成!
- 現(xiàn)場直擊丨涿州企業(yè)有序復(fù)工復(fù)產(chǎn)
- ie6-ie10系列瀏覽器什么意思(ie6-ie10)
- 宋吉州窯彩繪海濤紋瓷瓶(關(guān)于宋吉州窯彩繪海濤紋瓷瓶簡述)
- 和平精英改幀數(shù)軟件(幀數(shù)軟件)
- USDJPY:觸及干預(yù)水平,回調(diào)希望持續(xù)擴(kuò)大
- 4H-SiC晶片升華刻蝕去除亞表面損傷層對晶體缺陷PL成像的影響
- 挪威央行宣布加息25個(gè)基點(diǎn)
- 單身者如何過得更幸福
- 你知道張若昀和唐藝昕是怎么認(rèn)識的嗎?
- 徐家匯中心t2塔樓今年能封頂嗎 徐家匯中心
- 五十多歲男士最喜歡的窗木框修復(fù)方法與超贊禮物大揭秘
- 什么是安全生產(chǎn)雙重預(yù)防體系 什么是安全生產(chǎn)雙重預(yù)防體系建設(shè)
- 董鈺剛(關(guān)于董鈺剛簡述)
- 蔡金梗(關(guān)于蔡金梗簡述)
- 三星i8552手機(jī)(8558三星手機(jī))
- 19寸顯示器分辨率多少最佳(19寸液晶顯示器最佳分辨率)
- 蓬安縣實(shí)驗(yàn)小學(xué)(關(guān)于蓬安縣實(shí)驗(yàn)小學(xué)簡述)
- 美萊官方(美萊仕官網(wǎng))
- 安徽省漢鑄建設(shè)工程有限責(zé)任公司(關(guān)于安徽省漢鑄建設(shè)工程有限...
- 金山快盤還能花錢弄回資料嗎(金山快盤登陸首頁)
- 脫貧攻堅(jiān)六大舉措和六個(gè)精準(zhǔn) 六個(gè)精準(zhǔn)
- 國際金價(jià)后市下看1871美元
- 中糧期貨「原油」:國內(nèi)需求高位震蕩 持續(xù)增長有待驗(yàn)證
- geogle商城 geogle翻譯
- 葛麻外傳(關(guān)于葛麻外傳簡述)
- 葡國撤退前的澳門(關(guān)于葡國撤退前的澳門簡述)
- 原青海省經(jīng)濟(jì)和信息化委員會(huì)主任姚琳接受審查調(diào)查
今日要聞
- 人民銀行:我國經(jīng)濟(jì)長期向好的基本面沒有改變
- 基于云原生網(wǎng)關(guān)的流量防護(hù)實(shí)踐
- 葡國撤退前的澳門(關(guān)于葡國撤退前的澳門簡述)
- 自治區(qū)農(nóng)業(yè)農(nóng)村廳對忻城縣創(chuàng)建第三批國家農(nóng)產(chǎn)品質(zhì)量安全縣工作進(jìn)行評估驗(yàn)收
- 挪威央行宣布加息25個(gè)基點(diǎn)
- 越秀區(qū)及海珠區(qū)的三條馬路臨時(shí)泊位有調(diào)整
- 約戰(zhàn)茲維列夫,德約能否再進(jìn)一步?
- 秋季喝什么茶(秋季喝什么茶去濕氣最好)
- 沒有后窗的轎跑SUV,你會(huì)買單嗎?
- 外出注意!陜西新一輪強(qiáng)降水要來了