日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

高并发系统处理之——限流

發(fā)布時間:2024/9/30 windows 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 高并发系统处理之——限流 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

高并發(fā)系統(tǒng)處理之——限流

對于高并發(fā)應(yīng)用服務(wù),有三個很好的方案可以保護(hù)系統(tǒng)

1.緩存 緩存的目的是提升系統(tǒng)訪問速度和增大系統(tǒng)處理容量

2.降級 降級是當(dāng)服務(wù)出現(xiàn)問題或者影響到核心流程時,需要暫時屏蔽掉,待高峰或者問題解決后再打開

3.限流 限流的目的是通過對并發(fā)訪問/請求進(jìn)行限速,或者對一個時間窗口內(nèi)的請求進(jìn)行限速來保護(hù)系統(tǒng),一旦達(dá)到限制速率則可以拒絕服務(wù)、排隊或等待、降級等處理

限流算法

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

漏桶算法

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

對于很多應(yīng)用場景來說,除了要求能夠限制數(shù)據(jù)的平均傳輸速率外,還要求允許某種程度的突發(fā)傳輸。這時候漏桶算法可能就不合適了,令牌桶算法更為適合。

令牌桶算法

令牌桶算法的原理是系統(tǒng)會以一個恒定的速度往桶里放入令牌,而如果請求需要被處理,則需要先從桶里獲取一個令牌,當(dāng)桶里沒有令牌可取時,則拒絕服務(wù)。

在google開源的guava工具包中有一個類RateLimiter實現(xiàn)了這個功能,使用比較簡單,使用的是令牌桶算法:

//創(chuàng)建一個1s只能有0.5個請求的限流器(括號里的參數(shù)是1s內(nèi)的請求數(shù)) RateLimiter rateLimiter = RateLimiter.create(0.5);Arrays.asList("123", "456", "789", "1123", "11234").forEach(a -> {//獲取令牌rateLimiter.acquire();System.out.println(a + "------" + System.currentTimeMillis());});

打印輸出:

123------1534918207667 456------1534918209625 789------1534918211624 1123------1534918213625 11234------1534918215625

后續(xù)再看看源碼。

題外話

除此之外,Java里有個類Semaphore,信號量,可以使得一段代碼同時被多個線程并發(fā)處理。(加sychronized是只有一個線程)

//創(chuàng)建,參數(shù)為可并發(fā)數(shù)量 Semaphore semaphore = new Semaphore(2); //獲取鎖 semaphore.acquire(); //釋放鎖 semaphore.release();

總結(jié)

以上是生活随笔為你收集整理的高并发系统处理之——限流的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。