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

資訊專欄INFORMATION COLUMN

幾種限流技術(shù)

Warren / 978人閱讀

摘要:下面是幾種常見的限流技術(shù)一限流算法常用的限流算法有令牌桶,漏桶令牌桶令牌桶算法是網(wǎng)絡(luò)流量整形和速率限制中最常使用的一種算法。

就秒殺接口來說,當(dāng)訪問頻率或者并發(fā)請求超過其承受范圍的時候,這時候我們就要考慮限流來保證接口的可用性,以防止非預(yù)期的請求對系統(tǒng)壓力過大而引起的系統(tǒng)癱瘓。通常的策略就是拒絕多余的訪問,或者讓多余的訪問排隊等待服務(wù)。下面是幾種常見的限流技術(shù)

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

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

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

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

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

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

自定義定義注解

自定義切面

四、分布式限流

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

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

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

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

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

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

相關(guān)文章

  • Nginx一種限流方案

    摘要:背景抽獎接口為了防止高并發(fā)拖累系統(tǒng)通過來限流如最多同時允許個用戶進來抽獎超過個則默認(rèn)返回未中獎實現(xiàn)代碼進來一個一個請求就加限流一個請求完成就減一中配置 背景 抽獎接口為了防止高并發(fā)拖累系統(tǒng) 通過nginx來限流 如最多同時允許100個用戶進來抽獎 超過100個則默認(rèn)返回未中獎 實現(xiàn) lua 代碼 # init_r.lua local shared_data = ngx.shared.d...

    mayaohua 評論0 收藏0
  • 使用Guava RateLimiter限流以及源碼解析

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

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

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

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

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

    DC_er 評論0 收藏0

發(fā)表評論

0條評論

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