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

資訊專欄INFORMATION COLUMN

幾種限流技術

Warren / 974人閱讀

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

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

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

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

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

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

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

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

自定義定義注解

自定義切面

四、分布式限流

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

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

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

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

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/74542.html

相關文章

  • Nginx一種限流方案

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

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

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

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

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

    voyagelab 評論0 收藏0
  • 大型網站限流算法的實現和改造

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

    DC_er 評論0 收藏0

發表評論

0條評論

Warren

|高級講師

TA的文章

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