0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

如何在云原生網(wǎng)關上做流量防護?

OSC開源社區(qū) ? 來源:阿里云云原生 ? 2023-08-24 09:52 ? 次閱讀

背景

Cloud Native

在分布式系統(tǒng)架構中,每個請求都會經(jīng)過很多層處理,比如從入口網(wǎng)關再到 Web Server 再到服務之間的調(diào)用,再到服務訪問緩存或 DB 等存儲。在下圖流量防護體系中,我們通常遵循流量漏斗原則進行流量防護。在流量鏈路的每一層,我們都需要進行針對性的流量防護與容錯手段,來保障服務的穩(wěn)定性;同時,我們要盡可能地將流量防護進行前置,比如將一部分 HTTP 請求的流量控制前置到網(wǎng)關層,提前將一部分流量進行控制,這樣可以避免多余的流量打到后端,對后端造成壓力同時也造成資源的浪費,為此,在網(wǎng)關側做流量防護是十分有必要的。

550c5ce4-41a4-11ee-a2ef-92fbcf53809c.png

在傳統(tǒng)的流量網(wǎng)關場景下,對流量進行訪問控制是一個很常見的需求。比如在 nginx 中,limit_req 就是一個最為常見的限流配置,而在 Envoy 中,也支持本地以及全局兩種模式的限流,但是二者均有其局限性。在功能的豐富度上,二者不及常見的限流組件開源項目,如 Sentinel 、Hystrix 等,在實際的使用場景中,實用性也很弱,比如不支持無性能損耗的集群限流等等。

云原生網(wǎng)關的流量防護功能,底層使用了 Sentinel 內(nèi)核,并做了一定的強化和改造。Sentinel 是以流量與容錯為切入點,從流量控制、不穩(wěn)定調(diào)用隔離、熔斷降級、熱點流量防護、系統(tǒng)自適應保護、集群流控等多個維度來幫助保障服務和網(wǎng)關的穩(wěn)定性,同時提供秒級的流量監(jiān)控分析功能。其商業(yè)化產(chǎn)品不僅在阿里內(nèi)部淘寶、天貓等電商領域有著廣泛的應用,在互聯(lián)網(wǎng)金融、在線教育、游戲、直播行業(yè)和其他大型政央企行業(yè)也有著大量的實踐。

云原生網(wǎng)關作為集安全、流量、微服務三位于一體的下一代云上網(wǎng)關,在誕生之初,就被賦予了全場景使用的一個定位,為此流量防護也是其必備的一個能力,在流量防護能力上,具備以下優(yōu)勢:

具備與流行的流量防護項目如 Sentinel、Hystrix 等同等豐富的流量防護功能,并且還在不斷迭代更新中。

天然支持均攤式的集群流控,使得用戶無需關心網(wǎng)關以及 Upstream 服務的節(jié)點數(shù)。

提供配套的秒級監(jiān)控,并支持 QPS、拒絕 QPS 、異常 QPS 、RT 以及并發(fā)數(shù)等豐富的流量指標,同時支持歷史數(shù)據(jù)的查看,便捷地實現(xiàn)先觀測,再配防護規(guī)則的使用路徑。

流量防護規(guī)則秒級生效,配置防護規(guī)則后,無需等待,秒級生效。

Sentinel 流量模型介紹

Cloud Native

如下圖所示,流量防護是指,針對不同的流量,設置一道適合的屏障策略,在該屏障的觀測下,一旦判定該流量不能被通過,應該及時攔截,從而達到保護網(wǎng)關、以及后端 Upstream 服務的作用。

5520b4fa-41a4-11ee-a2ef-92fbcf53809c.png

云原生網(wǎng)關目前支持 QPS 限流、并發(fā)控制、熔斷三種不同的流量防護能力,本文將從這三個功能分別去闡述其具體的效果,以及適用的場景。

QPS 限流

這是流量防護最通用的一個場景,顧名思義,就是限制某個路由的流量,使其只能在一定的速率內(nèi)訪問網(wǎng)關,防止某個路由流量激增,造成后端服務的崩潰。云原生網(wǎng)關不僅支持路由級別的限流,而且天然支持均攤式的集群流控,用戶無需關心網(wǎng)關節(jié)點的數(shù)量或者后端服務節(jié)點的數(shù)量,只需要配置一個總體的閾值,就可以輕松實現(xiàn)對某個路由的總體閾值限流。

并發(fā)控制

并發(fā)控制的具體實現(xiàn),是通過實時維護一個并發(fā)值(這個值指的是一秒內(nèi),該路由流量的最大并行值,即未完成的請求數(shù)量),一旦下一個請求超過了設定的閾值,就攔截該請求。該功能不同于 QPS 限流,即使是在 QPS 較低的場景下,也能保證關鍵的資源,不被持續(xù)累積的慢調(diào)用所占用,而導致服務不可用,比如后端 Upstream 服務的線程池以及數(shù)據(jù)庫資源等等,假設長期被占用,就會導致該 Upstream 服務出現(xiàn)異常。和 QPS 限流類似,云原生網(wǎng)關天然支持均攤式集群并發(fā)限流,只需配置一個總體的并發(fā)閾值,就可以實現(xiàn)對某個路由的總體并發(fā)控制。

熔斷

在 Sentinel 、Hystrix 等限流項目中,都能見到該功能,就如字面上的意義,熔斷是指,在路由的流量出現(xiàn)了某個異常狀態(tài),需要及時熔斷該流量,從而保證與該路由相關 Upstream 服務能夠高效穩(wěn)定的運行,而不受某個異常路由流量的影響。

熔斷機制背后對應熔斷器模型 (Circuit Breaker)。當調(diào)用處于某種不穩(wěn)態(tài)(通常是出現(xiàn)異?;蚵{(diào)用)達到一定程度(通常關注比例而不是絕對量),熔斷開啟 (OPEN),所有的請求都會 fallback 掉;過一段時間后進入探測恢復階段 (HALF-OPEN),放過一定數(shù)量的請求,以這些請求的情況來 indicate 下游服務的恢復情況,若這些請求達到穩(wěn)態(tài),則恢復對應調(diào)用 (CLOSED);否則重回熔斷狀態(tài),具體原理如下圖所示: 5534ab0e-41a4-11ee-a2ef-92fbcf53809c.png

另外,云原生網(wǎng)關的流量防護能力底層是基于 Sentinel 的毫秒級滑動窗口精確統(tǒng)計,為此,云原生網(wǎng)關的流量防護功能界面也配套了一個秒級監(jiān)控系統(tǒng),可以通過觀測=>發(fā)現(xiàn)問題=>創(chuàng)建防護規(guī)則這個使用路徑去更好地在云原生網(wǎng)關上創(chuàng)建流量防護規(guī)則。

如何在云原生網(wǎng)關上進行流量防護

Cloud Native

QPS 限流

下面,我們將動手去實踐,在云原生網(wǎng)關上去使用上述的三大流量防護功能。

首先,進入到云原生網(wǎng)關實例中的路由配置界面,選擇“策略配置”里的“限流”選項,手動給這個路由注入一個 QPS 10000 左右的流量,在配套的秒級監(jiān)控可以看到 5 分鐘內(nèi)該路由的 QPS 情況。

55c0f0dc-41a4-11ee-a2ef-92fbcf53809c.png

在秒級監(jiān)控的下方,可以看到流控規(guī)則、并發(fā)規(guī)則,熔斷規(guī)則三個配置項,首先先配置一條限流規(guī)則,具體參數(shù)如下圖所示:

55efc664-41a4-11ee-a2ef-92fbcf53809c.png

打開開啟開關并點擊保存按鈕,就順利加入了一個 QPS 限流策略,這個策略的含義是,當路由流量的總 QPS 達到 5000 的時候,統(tǒng)計窗口內(nèi)下一個到來的流量會被拒絕,拒絕的行為是,返回一個HTTP包,返回碼是 429 ,內(nèi)容是一個 JSON 格式的文本,內(nèi)容是:


{
  "context": "just for test"
}
此時再返回查看秒級監(jiān)控,就可以看到如下的曲線圖:

5615dcd2-41a4-11ee-a2ef-92fbcf53809c.png

并發(fā)控制

并發(fā)規(guī)則也是類似,只不過,控制值由 QPS 變成并發(fā)數(shù),具體的參考配置參數(shù)如下:

564b59e8-41a4-11ee-a2ef-92fbcf53809c.png

返回查看秒級監(jiān)控,既可以看到以下的結果:

56711d68-41a4-11ee-a2ef-92fbcf53809c.png ?

熔斷

熔斷規(guī)則的配置較為復雜,具體的含義可以查看配置界面的說明,具體的參考配置如下:

56799182-41a4-11ee-a2ef-92fbcf53809c.png

這個規(guī)則的具體含義是,在 20 秒的統(tǒng)計窗口內(nèi),從第 5 個請求之后,開始統(tǒng)計慢調(diào)用的比例,一旦比例超過 20% ,立馬熔斷該路由的流量,其中慢調(diào)用的定義為 RT 超過 1 ms 的請求。配置完成之后,監(jiān)控的表現(xiàn)如下圖的所示:

56874bc4-41a4-11ee-a2ef-92fbcf53809c.png

上述的例子只是為了演示效果,在實際生產(chǎn)環(huán)境中,需要更為謹慎的去定義慢調(diào)用比例以及熔斷時長等參數(shù),否則可能會導致后端服務整體不可用,是一個風險較高的流量防護功能。除了慢調(diào)用比例之外,還支持異常比例的熔斷條件判斷,異常的定義是指 HTTP 調(diào)用發(fā)生 5XX 的情況。

總結

Cloud Native

本文詳盡地介紹了如何在云原生網(wǎng)關上做流量防護,包括在不同的場景下該配置何種防護規(guī)則,并給出了詳細的使用路徑,可以從中體驗出云原生網(wǎng)關的流量防護功能相對于其它網(wǎng)關產(chǎn)品限流功能的優(yōu)勢。作為云上網(wǎng)關的核心功能之一,后續(xù)我們也會持續(xù)強化流量防護功能,也歡迎大家持續(xù)關注阿里云官網(wǎng)的 MSE 微服務引擎產(chǎn)品動態(tài)。





審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 存儲器
    +關注

    關注

    38

    文章

    7434

    瀏覽量

    163519
  • 熔斷器
    +關注

    關注

    6

    文章

    457

    瀏覽量

    31502
  • 緩存器
    +關注

    關注

    0

    文章

    63

    瀏覽量

    11641
  • QPS
    QPS
    +關注

    關注

    0

    文章

    24

    瀏覽量

    8785
  • HTTP接口
    +關注

    關注

    0

    文章

    21

    瀏覽量

    1768

原文標題:基于云原生網(wǎng)關的流量防護實踐

文章出處:【微信號:OSC開源社區(qū),微信公眾號:OSC開源社區(qū)】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    性能提升1倍,成本直降50%!基于龍蜥指令加速的下一代云原生網(wǎng)關

    主導的云原生時代,下一代的網(wǎng)關模式仍然會是傳統(tǒng)的流量網(wǎng)關與微服務網(wǎng)關的兩層架構嗎?帶著這個問題,并結合阿里巴巴內(nèi)部沉淀的
    發(fā)表于 08-31 10:46

    只需 6 步,你就可以搭建一個云原生操作系統(tǒng)原型

    優(yōu)化業(yè)務調(diào)度能力 。最后一步當我們擁有了這樣的一套系統(tǒng),我們?nèi)绾尾拍馨阉惭b部署起來?設想一下,當我們面臨一千臺虛擬機的集群需要部署一個云原生系統(tǒng)的時候,我們該怎么?難道我們需要一臺一臺地安裝各種
    發(fā)表于 09-15 14:01

    華為云發(fā)布云原生基礎設施,云原生2.0時代正式開啟

    早在2010年,Paul Fremantle在一篇博客文章中首次提到了Cloud Native(云原生)。當時的云原生特指適合云計算模式的應用程序編寫方式??赡躊aul Fremantle也不會想到,十年過去了,云原生會引領IT
    的頭像 發(fā)表于 09-30 11:25 ?2212次閱讀

    云原生應用中的“云”指的是什么?

    云原生應用是獨立的小規(guī)模松散耦合服務的集合,旨在提供備受認可的業(yè)務價值,例如快速融合用戶反饋以實現(xiàn)持續(xù)改進。簡而言之,通過云原生應用開發(fā),您可以加速構建新應用,優(yōu)化現(xiàn)有應用并在云原生架構中集成。其
    的頭像 發(fā)表于 11-27 17:24 ?2166次閱讀

    華為云正式提出云原生2.0的概念

    華為云發(fā)布云原生產(chǎn)業(yè)白皮書,并提出云原生2.0的概念。
    的頭像 發(fā)表于 12-07 11:51 ?3685次閱讀

    引領云原生2.0時代,賦能新云原生企業(yè)

    十年云計算浪潮下,DevOps、容器、微服務等技術飛速發(fā)展,云原生成為潮流。Forrester首席分析師戴鯤表示,云原生是企業(yè)數(shù)字化轉型的基礎,企業(yè)需要建立云原生優(yōu)先的戰(zhàn)略,構建一體化全棧云原
    的頭像 發(fā)表于 12-11 16:04 ?1787次閱讀

    云原生解決了什么問題?

    盡管Heroku、Pivotal、CNCF等眾多廠商都對云原生下了不同的定義,但從本質(zhì)上考慮,因為云原生構建了易觀測松耦合容錯性高的系統(tǒng),所以其始終都在追求著三大目標:加速創(chuàng)新、降低成本、提高效率。
    的頭像 發(fā)表于 12-15 17:15 ?6827次閱讀
    <b class='flag-5'>云原生</b>解決了什么問題?

    云原生2.0時代 我們還要做什么?

    華為云自2015年以創(chuàng)始會員的身份參與了云原生計算基金會的組建,在過去的這5年時間里,華為云全面見證了云原生技術和產(chǎn)業(yè)的興起和發(fā)展:開源項目能力的完善期、云原生產(chǎn)業(yè)的發(fā)展與融合期,再到如今,
    的頭像 發(fā)表于 12-21 13:36 ?1792次閱讀

    如何更好地構建云原生應用生態(tài),推動業(yè)界更好地落地云原生

    ? 近年來,“云原生”成為炙手可熱的概念,云原生技術在制造、政務、電信、金融等垂直行業(yè)的應用占比也在快速攀升,有力地支撐了業(yè)務系統(tǒng)重構,越來越多的企業(yè)和開發(fā)者開始把業(yè)務與技術向云原生演進。 ? 中國
    的頭像 發(fā)表于 12-24 11:13 ?2576次閱讀

    解讀騰訊云原生 鵝廠云原生的“新路”與“歷承”

    在云計算產(chǎn)業(yè)中,云原生是一個長期討論的“老話題”。而在今年新基建、產(chǎn)業(yè)數(shù)字化的宏觀背景下,云原生的應用主體開始擴張,關于這條技術路徑的討論也重新火熱了起來。 云原生突然“翻紅”的原因,或許在于更多
    的頭像 發(fā)表于 12-28 18:10 ?3466次閱讀

    華為云中什么是云原生服務中心

    云原生服務中心(Operator Service Center,OSC)是面向服務提供商和服務使用者的云原生服務生命周期治理平臺,提供大量的云原生服務,并使用自研部署引擎,支持所有服務包統(tǒng)一管理
    發(fā)表于 07-27 15:44 ?681次閱讀
    華為云中什么是<b class='flag-5'>云原生</b>服務中心

    什么是分布式云原生

    體驗,讓客戶在使用云原生應用時,感受不到地域、跨云、流量的限制,把云原生的能力帶入到企業(yè)的每一個業(yè)務場景,加速千行百業(yè)擁抱云原生。 分布式云原生
    發(fā)表于 07-27 15:52 ?1542次閱讀

    Java與云原生的矛盾原因

    前陣子在 B 站刷到了周志明博士的視頻,主題是云原生時代下 Java,主要內(nèi)容是云原生時代下的挑戰(zhàn)與 Java 社區(qū)的對策。
    的頭像 發(fā)表于 10-31 11:15 ?1238次閱讀

    京東云原生安全產(chǎn)品重磅發(fā)布

    “安全產(chǎn)品那么多,我怎么知道防住了?”“大家都說自己是云原生的,我看都是換湯不換藥”在與客戶溝通云原生安全方案的時候,經(jīng)常會遇到這樣的吐槽。越來越的客戶已經(jīng)開始了云原生化的技術架構改造,也意識到
    的頭像 發(fā)表于 07-26 10:36 ?401次閱讀
    京東<b class='flag-5'>云原生</b>安全產(chǎn)品重磅發(fā)布

    云原生和非云原生哪個好?六大區(qū)別詳細對比

    云原生和非云原生各有優(yōu)劣,具體選擇取決于應用場景。云原生利用云計算的優(yōu)勢,通過微服務、容器化和自動化運維等技術,提高了應用的可擴展性、更新速度和成本效益。非云原生則可能更適合對延遲敏感
    的頭像 發(fā)表于 09-13 09:53 ?294次閱讀