摘要:背景抽獎接口為了防止高并發(fā)拖累系統(tǒng)通過來限流如最多同時允許個用戶進來抽獎超過個則默認返回未中獎實現(xiàn)代碼進來一個一個請求就加限流一個請求完成就減一中配置
背景
實現(xiàn)抽獎接口為了防止高并發(fā)拖累系統(tǒng) 通過nginx來限流 如最多同時允許100個用戶進來抽獎 超過100個則默認返回未中獎
lua 代碼
# init_r.lua local shared_data = ngx.shared.dict shared_data:set("draw", 0) # draw_r.lua local request_uri = ngx.var.request_uri; if string.sub(request_uri,1,22) == "/activity/lottery/draw" then local val, err = ngx.shared.dict:incr("draw", 1); #進來一個一個請求就加1 if val > 100 then #限流100 ngx.say("{"success" : true,"data" : {"awardType" : "00" }}") ngx.log(ngx.ERR,"draw limit val is:"..val) return ngx.exit(200) end return end # draw_decr.lua local request_uri = ngx.var.request_uri; if string.sub(request_uri,1,22) == "/activity/lottery/draw" then local newval, err = ngx.shared.dict:incr("draw", -1); #一個請求完成就減一 if newval < 0 then ngx.shared.dict:set("draw", 0); end return end
nginx中配置
init_by_lua_file /etc/nginx/init_r.lua; location / { default_type application/json; rewrite_by_lua_file /etc/nginx/draw_r.lua; log_by_lua_file /etc/nginx/draw_decr.lua; }
文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/39391.html
摘要:限流算法最簡單粗暴的限流算法就是計數(shù)器法了,而比較常用的有漏桶算法和令牌桶算法計數(shù)器計數(shù)器法是限流算法里最簡單也是最容易實現(xiàn)的一種算法。 運營研發(fā)團隊 李樂 高并發(fā)系統(tǒng)有三把利器:緩存、降級和限流; 限流的目的是通過對并發(fā)訪問/請求進行限速來保護系統(tǒng),一旦達到限制速率則可以拒絕服務(定向到錯誤頁)、排隊等待(秒殺)、降級(返回兜底數(shù)據(jù)或默認數(shù)據(jù)); 高并發(fā)系統(tǒng)常見的限流有:限制總并發(fā)...
摘要:令牌桶算法對于很多應用場景來說,除了要求能夠限制數(shù)據(jù)的平均傳輸速率外,還要求允許某種程度的突發(fā)傳輸。使用以及源碼解析開源工具包提供了限流工具類,該類基于令牌桶算法實現(xiàn)流量限制,使用十分方便,而且十分高效。 前言 在開發(fā)高并發(fā)系統(tǒng)時有三把利器用來保護系統(tǒng):緩存、降級和限流 緩存 緩存的目的是提升系統(tǒng)訪問速度和增大系統(tǒng)處理容量 降級 降級是當服務出現(xiàn)問題或者影響到核心流程時,需要暫時...
摘要:涉及變量接口時間單位允許訪問多少次遞增間隔時間遞增步長當前可訪問次數(shù)的訪問時間當前時間參照漏桶算法需要注意的點條件一線程一存在不能訪問添加,設置為線程二過去時間所有的條件二參考計算器算法條件二實現(xiàn)。算法升級參考漏桶算法升級實現(xiàn)。 最近寫了一個限流的插件,所以避免不了的接觸到了一些限流算法。本篇文章就來分析一下這幾種常見的限流算法 分析之前 依我個人的理解來說限流的話應該靈活到可以針對...
閱讀 2577·2021-10-25 09:45
閱讀 1239·2021-10-14 09:43
閱讀 2297·2021-09-22 15:23
閱讀 1519·2021-09-22 14:58
閱讀 1934·2019-08-30 15:54
閱讀 3539·2019-08-30 13:00
閱讀 1354·2019-08-29 18:44
閱讀 1571·2019-08-29 16:59