成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

限流處理

Wuv1Up / 1074人閱讀

摘要:如果一直優(yōu)先處理高優(yōu)先級的隊列,等這個隊列的請求處理完了,再處理優(yōu)先級低一級的請求,那么優(yōu)先級低的隊列可能要等很久才能處理。參考彈力設(shè)計之限流設(shè)計陳皓

調(diào)用配額

之前一篇文章到通過access key調(diào)用API的方式,這種調(diào)用方式難免會碰到一個問題,那就是,如果用戶不挺地高頻率調(diào)用API,服務器是否會過載,如果過載了,是否會影響內(nèi)部服務。

有個做法,就是給access key設(shè)置調(diào)用配額(limit,duration),這個配額指的是在某個時間段內(nèi)(duration),調(diào)用的次數(shù)不能超過limit指定的數(shù)額。如果超過了,則拒絕服務。這種可以通過緩存來實現(xiàn),利用緩存的expire時間,并且維持一個計數(shù)器,每當調(diào)用一次,則計數(shù)器減一。

def init(access_key, limit, duration):
    memcache.set(key=access_key, val=limit, expire=duration)

def handle(access_key):
    count = memcache.get(key=access_key)
    if count == 0:
        return "DENY"
    memcache.decr(key=access_key)
    return "OK"

前面init函數(shù)做初始化,后面handle函數(shù)對請求做判斷,每掉用一次,就把計數(shù)器減一;如果當前計數(shù)器里的值為0,則拒絕服務。

使用配額的目的是:對于一些高級客戶,可以提高配額,以提高體驗。如果是內(nèi)部服務調(diào)用,那么這個配額,可以提高些。

請求隊列

可以提供不同優(yōu)先級的隊列,針對不同的請求的優(yōu)先級,把他們放到不同的隊列里,先處理優(yōu)先級高的隊列,然后優(yōu)先級更低的隊列。(可以用redis里的有序隊列來實現(xiàn)?)如果有針對這個隊列的處理服務,這個服務能夠合并請求,那么則可以減輕后端服務的負載。

student:
{
    "name": "ABC",
    "age": 30,
}
requests:
[0] {"action": "ModifyItems", "name": "xiao ming"}
[1] {"action": "ModifyItems", "age": 26}

After handled
new request:
[0] {"action": "ModifyItems", "age": 26, "name": "xiao ming"}

如上,如果數(shù)據(jù)庫里有一個對象student,通過請求ModifyItems可以修改student屬性,請求隊列如requests所示,第一個請求修改了name,第二個請求修改了age,這個時候,可以把這2個請求合并成一個,這個新的請求跟兩個請求最終達到的小姑都是一樣的,所以是可行的。

如果一直優(yōu)先處理高優(yōu)先級的隊列,等這個隊列的請求處理完了,再處理優(yōu)先級低一級的請求,那么優(yōu)先級低的隊列可能要等很久才能處理。

這個時候,可以根據(jù)權(quán)重來處理,如果優(yōu)先級隊列有2個,他們優(yōu)先級分別是:2和1,數(shù)值越高,表示優(yōu)先級更高,那么根據(jù)優(yōu)先級權(quán)重,服務器先處理優(yōu)先級高的隊列里的2個請求,然后再去處理優(yōu)先級低隊列里的1個請求,優(yōu)先級低的隊列則不會被餓死。

參考:《彈力設(shè)計之“限流設(shè)計”》陳皓

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/61995.html

相關(guān)文章

  • 這個注解一次搞定限流與熔斷降級:@SentinelResource

    摘要:實現(xiàn)熔斷降級注解除了可以用來做限流控制之外,還能實現(xiàn)與類似的熔斷降級策略。函數(shù)簽名要求返回值類型必須與原函數(shù)返回值類型一致方法參數(shù)列表需要為空,或者可以額外多一個類型的參數(shù)用于接收對應的異常。若未配置和,則被限流降級時會將直接拋出。 在之前的《使用Sentinel實現(xiàn)接口限流》一文中,我們僅依靠引入Spring Cloud Alibaba對Sentinel的整合封裝spring-clo...

    Lionad-Morotar 評論0 收藏0
  • 【Nginx源碼研究】nginx限流模塊詳解

    摘要:限流算法最簡單粗暴的限流算法就是計數(shù)器法了,而比較常用的有漏桶算法和令牌桶算法計數(shù)器計數(shù)器法是限流算法里最簡單也是最容易實現(xiàn)的一種算法。 運營研發(fā)團隊 李樂 高并發(fā)系統(tǒng)有三把利器:緩存、降級和限流; 限流的目的是通過對并發(fā)訪問/請求進行限速來保護系統(tǒng),一旦達到限制速率則可以拒絕服務(定向到錯誤頁)、排隊等待(秒殺)、降級(返回兜底數(shù)據(jù)或默認數(shù)據(jù)); 高并發(fā)系統(tǒng)常見的限流有:限制總并發(fā)...

    voyagelab 評論0 收藏0
  • 幾種限流技術(shù)

    摘要:下面是幾種常見的限流技術(shù)一限流算法常用的限流算法有令牌桶,漏桶令牌桶令牌桶算法是網(wǎng)絡流量整形和速率限制中最常使用的一種算法。 就秒殺接口來說,當訪問頻率或者并發(fā)請求超過其承受范圍的時候,這時候我們就要考慮限流來保證接口的可用性,以防止非預期的請求對系統(tǒng)壓力過大而引起的系統(tǒng)癱瘓。通常的策略就是拒絕多余的訪問,或者讓多余的訪問排隊等待服務。下面是幾種常見的限流技術(shù) 一、限流算法常用的限流算...

    Warren 評論0 收藏0
  • 分布式系統(tǒng)關(guān)注點——想通關(guān)「限流」?只要這一篇

    摘要:之前有了解到哥的一部分讀者們沒有充分搞清楚限流和熔斷的關(guān)系。后者表示系統(tǒng)在同一時刻能處理的最大請求數(shù)量,比如次的并發(fā)。后續(xù)限流策略需要設(shè)定的具體標準數(shù)值就是從這些指標中來的。限流閾值不繼續(xù)處理請求。 如果這是第二次看到我的文章,歡迎掃描文末二維碼訂閱我喲~本文長度為2869字,建議閱讀8分鐘。 可能你在網(wǎng)上看過不少「限流」相關(guān)的文章,但是z哥的這篇可能是最全面,最深入淺出的一篇了(容我...

    CollinPeng 評論0 收藏0
  • 限流器及Guava實現(xiàn)分析

    摘要:計數(shù)限流算法無論固定窗口還是滑動窗口核心均是對請求進行計數(shù),區(qū)別僅僅在于對于計數(shù)時間區(qū)間的處理。令牌桶限流實現(xiàn)原理令牌桶限流的實現(xiàn)原理在有詳細說明。因此由此為入口進行分析。目前可返回的實現(xiàn)子類包括及兩種,具體不同下文詳細分析。 限流 限流一詞常用于計算機網(wǎng)絡之中,定義如下: In computer networks, rate limiting is used to control t...

    xcc3641 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<