本申請(qǐng)屬于互聯(lián)網(wǎng),具體涉及一種應(yīng)用程序編程接口(applicationprogramming?interface,api)接口的限流方法、裝置、電子設(shè)備和存儲(chǔ)介質(zhì)。
背景技術(shù):
1、隨著互聯(lián)網(wǎng)的發(fā)展,服務(wù)器承擔(dān)著越來(lái)越大的請(qǐng)求量,在這種高并發(fā)訪問(wèn)環(huán)境下,為防止突發(fā)流量壓垮服務(wù)器,保證服務(wù)器的穩(wěn)定性,通常需要給服務(wù)端配置限流策略。目前主流的限流算法主要為令牌桶限流、漏桶限流以及計(jì)數(shù)器限流,還有在分布式場(chǎng)景下,基于緩存隊(duì)列的滑動(dòng)窗口限流方法。
2、但是上述解決方案只能解決單個(gè)api接口的限流問(wèn)題。在實(shí)際應(yīng)用中,一方面,一個(gè)后端服務(wù)擁有多個(gè)重要程度不一樣的api接口,難以準(zhǔn)確地為每個(gè)api接口逐一配置流量閾值,并且,為每個(gè)api接口逐一配置流量閾值的工作量也較大。
技術(shù)實(shí)現(xiàn)思路
1、本申請(qǐng)實(shí)施例的目的是提供一種api接口的限流方法、裝置、電子設(shè)備和存儲(chǔ)介質(zhì),能夠解決為每個(gè)api接口逐一配置流量閾值而導(dǎo)致流量閾值的準(zhǔn)確性不高以及工作量較大的問(wèn)題。
2、第一方面,本申請(qǐng)實(shí)施例提供了一種api接口的限流方法,該方法包括:服務(wù)器獲取接收到外部請(qǐng)求的目標(biāo)api接口所屬的目標(biāo)分組,其中,所述目標(biāo)分組為第一分組或第二分組,所述第一分組中的每個(gè)api接口配置有一個(gè)第一限流閾值,所述第二分組配置有一個(gè)第二限流閾值,所述第二分組中的各個(gè)api接口共享所述第二限流閾值;在所述目標(biāo)分組為所述第二分組的情況下,獲取為所述第二分組配置的所述第二限流閾值;在所述第二分組中的所有api接口的流量總和超過(guò)所述第二限流閾值的情況下,對(duì)所述第二分組中的各個(gè)api接口進(jìn)行限流。
3、第二方面,本申請(qǐng)實(shí)施例提供了一種api接口的限流裝置,該裝置包括:第一獲模塊,用于獲取接收到外部請(qǐng)求的目標(biāo)api接口所屬的目標(biāo)分組,其中,所述目標(biāo)分組為第一分組或第二分組,所述第一分組中的每個(gè)api接口配置有一個(gè)第一限流閾值,所述第二分組配置有一個(gè)第二限流閾值,所述第二分組中的各個(gè)api接口共享所述第二限流閾值;第二獲取模塊,用于在所述目標(biāo)分組為所述第二分組的情況下,獲取為所述第二分組配置的所述第二限流閾值;限流模塊,用于在所述第二分組中的所有api接口的流量總和超過(guò)所述第二限流閾值的情況下,對(duì)所述第二分組中的各個(gè)api接口進(jìn)行限流。
4、第三方面,本申請(qǐng)實(shí)施例提供了一種電子設(shè)備,該電子設(shè)備包括處理器和存儲(chǔ)器,所述存儲(chǔ)器存儲(chǔ)可在所述處理器上運(yùn)行的程序或指令,所述程序或指令被所述處理器執(zhí)行時(shí)實(shí)現(xiàn)如第一方面所述的方法的步驟。
5、第四方面,本申請(qǐng)實(shí)施例提供了一種可讀存儲(chǔ)介質(zhì),所述可讀存儲(chǔ)介質(zhì)上存儲(chǔ)程序或指令,所述程序或指令被處理器執(zhí)行時(shí)實(shí)現(xiàn)如第一方面所述的方法的步驟。
6、第五方面,本申請(qǐng)實(shí)施例提供了一種芯片,所述芯片包括處理器和通信接口,所述通信接口和所述處理器耦合,所述處理器用于運(yùn)行程序或指令,實(shí)現(xiàn)如第一方面所述的方法。
7、第六方面,本申請(qǐng)實(shí)施例提供一種計(jì)算機(jī)程序產(chǎn)品,該程序產(chǎn)品被存儲(chǔ)在存儲(chǔ)介質(zhì)中,該程序產(chǎn)品被至少一個(gè)處理器執(zhí)行以實(shí)現(xiàn)如第一方面所述的方法。
8、在本申請(qǐng)實(shí)施例中,通過(guò)對(duì)api接口進(jìn)行分組,根據(jù)api接口的分組來(lái)配置不同的閾值,只針對(duì)第一分組的各個(gè)api接口分別配置一個(gè)限流閾值,而對(duì)于第二分組,為第二分組配置一個(gè)限流閾值,第二分組中的各個(gè)api接口共享該限流閾值,而不需要為第二分組中的各個(gè)api接口分別配置一個(gè)流量閾值,從而減少了配置流量閾值的工作量,避免了無(wú)法準(zhǔn)確地為每個(gè)api接口逐一配置流量閾值的問(wèn)題。
1.一種api接口的限流方法,其特征在于,包括:
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,在所述服務(wù)器獲取接收到外部請(qǐng)求的目標(biāo)應(yīng)用程序編程接口api接口所屬的目標(biāo)分組之后,所述方法還包括:
3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,在所述服務(wù)器獲取接收到外部請(qǐng)求的目標(biāo)應(yīng)用程序編程接口api接口所屬的目標(biāo)分組之前,所述方法還包括:
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述服務(wù)器獲取接收到外部請(qǐng)求的目標(biāo)應(yīng)用程序編程接口api接口所屬的目標(biāo)分組之前,所述方法還包括:
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,基于所述服務(wù)器的性能臨界值以及各個(gè)所述第二分組的屬性,配置各個(gè)所述第二分組的第二限流閾值,包括:
6.根據(jù)權(quán)利要求3所述的方法,其特征在于,在將所述服務(wù)器的各個(gè)api接口分為一個(gè)所述第一分組和至少一個(gè)所述第二分組之后,所述方法還包括:
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,在將所述第一分組內(nèi)的各個(gè)所述api接口在上一周期內(nèi)的qps的最大值設(shè)置為所述api接口的第一限流閾值之后,所述方法還包括:
8.一種api接口的限流裝置,其特征在于,包括:
9.一種電子設(shè)備,包括存儲(chǔ)器和處理器,其特征在于,所述處理器執(zhí)行所述計(jì)算機(jī)程序時(shí)實(shí)現(xiàn)權(quán)利要求1-7中任一項(xiàng)所述方法的步驟。
10.一種可讀存儲(chǔ)介質(zhì),其特征在于,所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)存儲(chǔ)計(jì)算機(jī)指令,該計(jì)算機(jī)指令用于使該計(jì)算機(jī)執(zhí)行權(quán)利要求1-7所述方法的步驟。