成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

幾種限流技術(shù)

Warren / 1045人閱讀

摘要:下面是幾種常見(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ù)

一、限流算法
常用的限流算法有:令牌桶,漏桶
1.令牌桶
令牌桶算法是網(wǎng)絡(luò)流量整形和速率限制中最常使用的一種算法。典型情況下,令牌桶算法用來(lái)控制發(fā)送到網(wǎng)絡(luò)上的數(shù)據(jù)的數(shù)目,并允許突發(fā)數(shù)據(jù)的發(fā)送。

在秒殺活動(dòng)中,用戶的請(qǐng)求速率是不固定的,這里我們假定為10r/s,令牌按照5個(gè)每秒的速率放入令牌桶,桶中最多存放20個(gè)令牌。仔細(xì)想想,是不是總有那么一部分請(qǐng)求被丟棄。
2.漏桶
漏桶算法的主要目的是控制數(shù)據(jù)注入到網(wǎng)絡(luò)的速率,平滑網(wǎng)絡(luò)上的突發(fā)流量。漏桶算法提供了一種機(jī)制,通過(guò)它,突發(fā)流量可以被整形以便為網(wǎng)絡(luò)提供一個(gè)穩(wěn)定的流量

二、應(yīng)用限流
Tomcat
在Tomcat容器中,我們可以通過(guò)自定義線程池,配置最大連接數(shù),請(qǐng)求處理隊(duì)列等參數(shù)來(lái)達(dá)到限流的目的。
Tomcat默認(rèn)使用自帶的連接池,這里我們也可以自定義實(shí)現(xiàn),打開(kāi)/conf/server.xml文件,在Connector之前配置一個(gè)線程池:

name:共享線程池的名字。這是Connector為了共享線程池要引用的名字,該名字必須唯一。默認(rèn)值:None;
namePrefix:在JVM上,每個(gè)運(yùn)行線程都可以有一個(gè)name 字符串。這一屬性為線程池中每個(gè)線程的name字符串設(shè)置了一個(gè)前綴,Tomcat將把線程號(hào)追加到這一前綴的后面。默認(rèn)值:tomcat-exec-;
maxThreads:該線程池可以容納的最大線程數(shù)。默認(rèn)值:200;
maxIdleTime:在Tomcat關(guān)閉一個(gè)空閑線程之前,允許空閑線程持續(xù)的時(shí)間(以毫秒為單位)。只有當(dāng)前活躍的線程數(shù)大于minSpareThread的值,才會(huì)關(guān)閉空閑線程。默認(rèn)值:60000(一分鐘)。
minSpareThreads:Tomcat應(yīng)該始終打開(kāi)的最小不活躍線程數(shù)。默認(rèn)值:25。
配置Connector

? executor:表示使用該參數(shù)值對(duì)應(yīng)的線程池;
? minProcessors:服務(wù)器啟動(dòng)時(shí)創(chuàng)建的處理請(qǐng)求的線程數(shù);
? maxProcessors:最大可以創(chuàng)建的處理請(qǐng)求的線程數(shù);
? acceptCount:指定當(dāng)所有可以使用的處理請(qǐng)求的線程數(shù)都被使用時(shí),可以放到處理隊(duì)列中的請(qǐng)求數(shù),超過(guò)這個(gè)數(shù)的請(qǐng)求將不予處理。

三、API限流
秒殺活動(dòng)中,接口的請(qǐng)求量會(huì)是平時(shí)的數(shù)百倍甚至數(shù)千倍,從而有可能導(dǎo)致接口不可用,并引發(fā)連鎖反應(yīng)導(dǎo)致整個(gè)系統(tǒng)崩潰,甚至有可能會(huì)影響到其它服務(wù)。
那么如何應(yīng)對(duì)這種突然事件呢?這里我們采用開(kāi)源工具包guava提供的限流工具類RateLimiter進(jìn)行API限流,該類基于"令牌桶算法",開(kāi)箱即用。

自定義定義注解

自定義切面

四、分布式限流

Nginx
如何使用Nginx實(shí)現(xiàn)基本的限流,比如單個(gè)IP限制每秒訪問(wèn)50次。通過(guò)Nginx限流模塊,我們可以設(shè)置一旦并發(fā)連接數(shù)超過(guò)我們的設(shè)置,將返回503錯(cuò)誤給客戶端。

配置說(shuō)明
imit_conn_zone
是針對(duì)每個(gè)IP定義一個(gè)存儲(chǔ)session狀態(tài)的容器。這個(gè)示例中定義了一個(gè)100m的容器,按照32bytes/session,可以處理3200000個(gè)session。

limit_rate 300k;
對(duì)每個(gè)連接限速300k. 注意,這里是對(duì)連接限速,而不是對(duì)IP限速。如果一個(gè)IP允許兩個(gè)并發(fā)連接,那么這個(gè)IP就是限速limit_rate×2。

burst=5;
這相當(dāng)于桶的大小,如果某個(gè)請(qǐng)求超過(guò)了系統(tǒng)處理速度,會(huì)被放入桶中,等待被處理。如果桶滿了,那么抱歉,請(qǐng)求直接返回503,客戶端得到一個(gè)服務(wù)器忙的響應(yīng)。如果系統(tǒng)處理請(qǐng)求的速度比較慢,桶里的請(qǐng)求也不能一直待在里面,如果超過(guò)一定時(shí)間,也是會(huì)被直接退回,返回服務(wù)器忙的響應(yīng)。

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

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

相關(guān)文章

  • Nginx一種限流方案

    摘要:背景抽獎(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.d...

    mayaohua 評(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
  • 【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
  • 大型網(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)論

閱讀需要支付1元查看
<