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

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)站
铜梁县| 宜州市| 登封市| 阳高县| 望江县| 万年县| 全州县| 汝阳县| 安图县| 乌拉特前旗| 梨树县| 临洮县| 大足县| 太仓市| 临高县| 宜春市| 陇西县| 姜堰市| 保康县| 化德县| 浏阳市| 衡水市| 南丹县| 陕西省| 辽源市| 瑞安市| 邳州市| 象山县| 义乌市| 巴林左旗| 万州区| 武功县| 清水河县| 漳浦县| 松溪县| 甘南县| 巍山| 专栏| 志丹县| 渝北区| 乌兰浩特市|