一個(gè)系統(tǒng)的處理能力是有上限的,當(dāng)遇到搶購等高并發(fā)場(chǎng)景時(shí),如果不采取任何措施,大量的請(qǐng)求會(huì)使得系統(tǒng)在短時(shí)間內(nèi)崩潰,造成不可預(yù)計(jì)的后果。這時(shí)就需要使用「限流」來對(duì)系統(tǒng)進(jìn)行保護(hù)。
「限流」是指限制并發(fā)訪問數(shù)或者限制一個(gè)時(shí)間窗口內(nèi)允許處理的請(qǐng)求數(shù)量來保護(hù)系統(tǒng),一旦達(dá)到限制數(shù)量,則對(duì)當(dāng)前請(qǐng)求進(jìn)行處理采取對(duì)應(yīng)的拒絕措施,比如跳轉(zhuǎn)到錯(cuò)誤頁面、拒絕請(qǐng)求等。從本質(zhì)上來說,「限流」的主要作用是損失一部分用戶的可用性,為大部分用戶提供穩(wěn)定可靠的服務(wù)?!赶蘖鳌故茿PI網(wǎng)關(guān)最核心的能力之一,本文將帶您了解如何使用騰訊云API網(wǎng)關(guān)實(shí)現(xiàn)多維度,精細(xì)化的限流,最大程度上保護(hù)您的業(yè)務(wù)安全。
01.
使用API網(wǎng)關(guān)實(shí)現(xiàn)限流
如圖,在騰訊云API網(wǎng)關(guān)上主要可以通過3個(gè)方面進(jìn)行流量管理,保護(hù)后端安全:
1.使用流量控制插件實(shí)現(xiàn)多維度精細(xì)化限流;
2.支持在API網(wǎng)關(guān)上調(diào)整主次業(yè)務(wù)限流值,為核心業(yè)務(wù)分配更多資源;
3.API網(wǎng)關(guān)提供完善的實(shí)時(shí)日志、監(jiān)控、告警能力,方便即時(shí)調(diào)整限流策略。
方案優(yōu)勢(shì)
·免改造
限流策略都收斂在網(wǎng)關(guān)層,無需改造后臺(tái)服務(wù)即可接入;
·維度多
支持多種維度的限流,大到整個(gè)服務(wù),小到某個(gè)用戶都可以設(shè)置限流。同時(shí)支持各種維度間的自由組合,滿足的業(yè)務(wù)場(chǎng)景多;
·性能好
基于開源的經(jīng)典限流算法優(yōu)化,同等條件下性能優(yōu)于傳統(tǒng)的解決方案(如Nginx限流),限流功能本身幾乎不影響接口性能;
·支持流量分析
提供豐富的流量看板和支持實(shí)時(shí)查詢流量數(shù)據(jù)的云API,可基于流量數(shù)據(jù)分析,優(yōu)化限流策略。
02.
「API網(wǎng)關(guān)」流量控制插件
使用流量控制插件是API網(wǎng)關(guān)提供的進(jìn)行流控限制的主要方式,支持設(shè)置三種資源維度(API、應(yīng)用、ClientIP)和四種時(shí)間維度(秒、分鐘、小時(shí)、天)的限流。插件中還支持設(shè)置特殊的應(yīng)用和特殊ClientIP,特例的限流值將覆蓋默認(rèn)的應(yīng)用、ClientIP的限流值。
您可創(chuàng)建基礎(chǔ)流控插件并綁定到API生效,以保護(hù)您的后端服務(wù)。流控插件的使用步驟如下:
1.登錄API網(wǎng)關(guān)控制臺(tái)。
控制臺(tái)地址:https://console.cloud.tencent.com/api
2.在左側(cè)導(dǎo)航欄,單擊「插件」,進(jìn)入插件列表頁,單擊頁面左上角的「新建」,選擇插件類型為「基礎(chǔ)流量控制」,新建一個(gè)基礎(chǔ)流量控制插件,按照您的實(shí)際業(yè)務(wù)需求配置后,點(diǎn)擊「保存」按鈕。
3.在插件列表中選中剛剛創(chuàng)建好的插件,點(diǎn)擊操作列的「綁定API」,在綁定API彈窗中選擇服務(wù)和環(huán)境,并選擇需要綁定插件的API。
4.單擊「確定」,即可將插件綁定到API,此時(shí)插件的配置已經(jīng)對(duì)API生效。
03.
「API網(wǎng)關(guān)」服務(wù)降級(jí)
服務(wù)降級(jí)是限流的常用手段,其主要思路是在后端壓力劇增的情況下,根據(jù)當(dāng)前業(yè)務(wù)情況及流量對(duì)一些服務(wù)和頁面有策略的降級(jí),以此釋放服務(wù)器資源以保證核心任務(wù)的正常運(yùn)行。通過API網(wǎng)關(guān)的實(shí)例、服務(wù)、API限流功能可以便捷的實(shí)現(xiàn)服務(wù)降級(jí)。
1.通過API網(wǎng)關(guān)服務(wù)區(qū)分不同業(yè)務(wù)模塊
專享實(shí)例可提供更高的性能,當(dāng)您通過API網(wǎng)關(guān)服務(wù)來區(qū)分不同業(yè)務(wù)模塊時(shí),可從邏輯上區(qū)分主次業(yè)務(wù),將次要業(yè)務(wù)落在共享實(shí)例,將核心業(yè)務(wù)落在專享實(shí)例中,以便為核心業(yè)務(wù)提供更多資源。兩種實(shí)例間支持無感知的遷移切換,當(dāng)業(yè)務(wù)邏輯變化時(shí),也能方便的進(jìn)行調(diào)整。
2.通過API網(wǎng)關(guān)API區(qū)分不同業(yè)務(wù)模塊
當(dāng)您通過API網(wǎng)關(guān)來區(qū)分不同業(yè)務(wù)模塊時(shí),業(yè)務(wù)相關(guān)的一組API都處于同一個(gè)服務(wù)下,該服務(wù)的QPS上限是固定的;因此,您可前往API詳情頁,為核心API設(shè)置高QPS上限,為此要API設(shè)置低QPS上限,采用「棄車保帥」的策略,保證核心業(yè)務(wù)的訪問。
04.
「API網(wǎng)關(guān)」實(shí)時(shí)流量監(jiān)控
API網(wǎng)關(guān)基于云日志服務(wù)CLS和云監(jiān)控提供完善的實(shí)時(shí)日志、監(jiān)控、告警能力,目前支持的監(jiān)控指標(biāo)包括請(qǐng)求數(shù)、出流量、響應(yīng)時(shí)間、錯(cuò)誤數(shù)等,所有監(jiān)控指標(biāo)都支持1分鐘、5分鐘、1小時(shí)、1天四種時(shí)間維度,也開放了標(biāo)準(zhǔn)的云API供用戶調(diào)用查詢。
您可以在搶購等高并發(fā)活動(dòng)期間,通過控制臺(tái)監(jiān)控面板或云API實(shí)時(shí)監(jiān)控業(yè)務(wù)流量的變化,根據(jù)實(shí)際情況不斷自動(dòng)或手動(dòng)調(diào)整限流策略,以達(dá)到最好的限流效果。
05.
「API網(wǎng)關(guān)」限流技術(shù)優(yōu)勢(shì)
騰訊云API網(wǎng)關(guān)限流是基于經(jīng)典令牌桶算法進(jìn)行優(yōu)化,性能較通用方案有了有效提升,依賴騰訊云上高可用高性能的中控平臺(tái),具備以下優(yōu)勢(shì):
·能夠有效控制API平均請(qǐng)求頻率;
·平滑處理系統(tǒng)負(fù)載,有力應(yīng)對(duì)流量突增;
·動(dòng)態(tài)計(jì)算令牌速率,減少性能損耗;
·多維度集群化的高精度流控,全力保證后端服務(wù)安全。
未來展望
目前騰訊云API網(wǎng)關(guān)已經(jīng)支持了非常強(qiáng)大的限流能力,我們也在此基礎(chǔ)上不斷深耕探索,未來的重點(diǎn)一方面是不斷優(yōu)化限流算法,提供極致的性能;另一方面API網(wǎng)關(guān)將推出基于請(qǐng)求參數(shù)的限流能力,滿足更多限流場(chǎng)景,敬請(qǐng)期待!