国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Nginx一種限流方案

mayaohua / 2557人閱讀

摘要:背景抽獎(jiǎng)接口為了防止高并發(fā)拖累系統(tǒng)通過(guò)來(lái)限流如最多同時(shí)允許個(gè)用戶進(jìn)來(lái)抽獎(jiǎng)超過(guò)個(gè)則默認(rèn)返回未中獎(jiǎng)實(shí)現(xiàn)代碼進(jìn)來(lái)一個(gè)一個(gè)請(qǐng)求就加限流一個(gè)請(qǐng)求完成就減一中配置

背景

抽獎(jiǎng)接口為了防止高并發(fā)拖累系統(tǒng) 通過(guò)nginx來(lái)限流 如最多同時(shí)允許100個(gè)用戶進(jìn)來(lái)抽獎(jiǎng) 超過(guò)100個(gè)則默認(rèn)返回未中獎(jiǎng)

實(shí)現(xiàn)

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); #進(jìn)來(lái)一個(gè)一個(gè)請(qǐng)求就加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); #一個(gè)請(qǐng)求完成就減一
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;
  }

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/39391.html

相關(guān)文章

  • 幾種限流技術(shù)

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

    Warren 評(píng)論0 收藏0
  • Nginx源碼研究】nginx限流模塊詳解

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

    voyagelab 評(píng)論0 收藏0
  • 使用Guava RateLimiter限流以及源碼解析

    摘要:令牌桶算法對(duì)于很多應(yīng)用場(chǎng)景來(lái)說(shuō),除了要求能夠限制數(shù)據(jù)的平均傳輸速率外,還要求允許某種程度的突發(fā)傳輸。使用以及源碼解析開(kāi)源工具包提供了限流工具類,該類基于令牌桶算法實(shí)現(xiàn)流量限制,使用十分方便,而且十分高效。 前言 在開(kāi)發(fā)高并發(fā)系統(tǒng)時(shí)有三把利器用來(lái)保護(hù)系統(tǒng):緩存、降級(jí)和限流 緩存 緩存的目的是提升系統(tǒng)訪問(wèn)速度和增大系統(tǒng)處理容量 降級(jí) 降級(jí)是當(dāng)服務(wù)出現(xiàn)問(wèn)題或者影響到核心流程時(shí),需要暫時(shí)...

    simpleapples 評(píng)論0 收藏0
  • 大型網(wǎng)站限流算法的實(shí)現(xiàn)和改造

    摘要:涉及變量接口時(shí)間單位允許訪問(wèn)多少次遞增間隔時(shí)間遞增步長(zhǎng)當(dāng)前可訪問(wèn)次數(shù)的訪問(wèn)時(shí)間當(dāng)前時(shí)間參照漏桶算法需要注意的點(diǎn)條件一線程一存在不能訪問(wèn)添加,設(shè)置為線程二過(guò)去時(shí)間所有的條件二參考計(jì)算器算法條件二實(shí)現(xiàn)。算法升級(jí)參考漏桶算法升級(jí)實(shí)現(xiàn)。 最近寫(xiě)了一個(gè)限流的插件,所以避免不了的接觸到了一些限流算法。本篇文章就來(lái)分析一下這幾種常見(jiàn)的限流算法 分析之前 依我個(gè)人的理解來(lái)說(shuō)限流的話應(yīng)該靈活到可以針對(duì)...

    DC_er 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<