成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

RateLimit-使用guava來做接口限流代碼示例-創(chuàng)新互聯(lián)

本文主要研究的是RateLimit-使用guava來做接口限流的相關(guān)內(nèi)容,具體如下。

成都創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),天河企業(yè)網(wǎng)站建設(shè),天河品牌網(wǎng)站建設(shè),網(wǎng)站定制,天河網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,天河網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

一、問題描述


  某天A君突然發(fā)現(xiàn)自己的接口請求量突然漲到之前的10倍,沒多久該接口幾乎不可使用,并引發(fā)連鎖反應(yīng)導(dǎo)致整個系統(tǒng)崩潰。如何應(yīng)對這種情況呢?生活給了我們答案:比如老式電閘都安裝了保險絲,一旦有人使用超大功率的設(shè)備,保險絲就會燒斷以保護(hù)各個電器不被強(qiáng)電流給燒壞。同理我們的接口也需要安裝上“保險絲”,以防止非預(yù)期的請求對系統(tǒng)壓力過大而引起的系統(tǒng)癱瘓,當(dāng)流量過大時,可以采取拒絕或者引流等機(jī)制。


二、常用的限流算法


常用的限流算法有兩種:漏桶算法和令牌桶算法。


漏桶算法思路很簡單,請求先進(jìn)入到漏桶里,漏桶以一定的速度出水,當(dāng)水請求過大會直接溢出,可以看出漏桶算法能強(qiáng)行限制數(shù)據(jù)的傳輸速率。

圖1 漏桶算法示意圖


對于很多應(yīng)用場景來說,除了要求能夠限制數(shù)據(jù)的平均傳輸速率外,還要求允許某種程度的突發(fā)傳輸。這時候漏桶算法可能就不合適了,令牌桶算法更為適合。如圖2所示,令牌桶算法的原理是系統(tǒng)會以一個恒定的速度往桶里放入令牌,而如果請求需要被處理,則需要先從桶里獲取一個令牌,當(dāng)桶里沒有令牌可取時,則拒絕服務(wù)。

圖2 令牌桶算法示意圖

三、限流工具類RateLimiter


  google開源工具包guava提供了限流工具類RateLimiter,該類基于“令牌桶算法”,非常方便使用。該類的接口具體的使用請參考:RateLimiter使用實(shí)踐。

RateLimiter 使用Demo

package ratelimite;
import com.google.common.util.concurrent.RateLimiter;
public class RateLimiterDemo {
	public static void main(String[] args) {
		testNoRateLimiter();
		testWithRateLimiter();
	}
	public static void testNoRateLimiter() {
		long start = System.currentTimeMillis();
		for (int i = 0; i < 10; i++) {
			System.out.println("call execute.." + i);
		}
		long end = System.currentTimeMillis();
		System.out.println(end - start);
	}
	public static void testWithRateLimiter() {
		long start = System.currentTimeMillis();
		RateLimiter limiter = RateLimiter.create(10.0);
		// 每秒不超過10個任務(wù)被提交 
		for (int i = 0; i < 10; i++) {
			limiter.acquire();
			// 請求RateLimiter, 超過permits會被阻塞 
			System.out.println("call execute.." + i);
		}
		long end = System.currentTimeMillis();
		System.out.println(end - start);
	}
}

網(wǎng)站題目:RateLimit-使用guava來做接口限流代碼示例-創(chuàng)新互聯(lián)
瀏覽地址:http://jinyejixie.com/article16/dcjdgg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動網(wǎng)站建設(shè)、自適應(yīng)網(wǎng)站、定制網(wǎng)站外貿(mào)建站、網(wǎng)站內(nèi)鏈、企業(yè)網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站
会昌县| 宁城县| 吉木萨尔县| 汝城县| 铁岭市| 山西省| 乐业县| 马边| 庆云县| 吉隆县| 涞源县| 蒙阴县| 宜兰县| 临漳县| 卓尼县| 历史| 永川市| 安龙县| 合水县| 正阳县| 宜宾县| 津市市| 抚远县| 广丰县| 明星| 平罗县| 庆云县| 阜康市| 大埔县| 建阳市| 新平| 安义县| 寻甸| 天津市| 新余市| 蕲春县| 宜川县| 克拉玛依市| 乐清市| 林州市| 南丰县|