日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

限流算法-固定时间窗口

發布時間:2024/3/24 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 限流算法-固定时间窗口 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文介紹了固定時間窗口限流算法。

前言

首先限流的算法有很多種,比如固定時間窗口限流算法、滑動時間窗口算法、漏桶算法、令牌桶算法,其余的算法后續我們會一一介紹。

一、限流場景

站在服務調用方的角度來說,限流的場景大體分為兩類。

  • 對外提供服務

    用戶通過某種形式調用到了我們的服務,比如提供了web服務。

    (1)用戶增長速度太快。請求量一下子上來了,接口扛不住壓力

    (2)爬蟲

    (3)熱點事件。比如公司上市成功曝光度增加,從而導致訪問用戶量增加。

    (4)刷單。有的公司甚至主動為用戶提供刷單工具,就會導致服務的請求量暴增。

  • 對內提供服務

    當前存在A、B、C、D四個服務,A服務同時被B、C、D服務調用,如果B服務的請求量暴增,導致A服務宕機,同時就會導致C、D服務也無法使用,這種情況就不太合適。

二、固定時間窗口限流算法原理

固定時間內只允許通過一定數據量請求,超出的請求數則會被攔截。

缺點:

這種方式下我們假定的是請求均勻分布,如果請求數據只集中在時間窗口內的某一個時間段,那么就可能超出承受范圍,如下圖所示。

三、代碼實現

public class FixedTimeWindow {public static final Integer DURATION = 1 * 1000; // 時間窗口大小,單位毫秒public static final Integer MAX_COUNT = 100; // 允許的最大請求次數public static Integer curCount = 0; // 當前請求次數public static Long endTime = new Date().getTime(); // 當前時間窗口的開始時間public boolean limit() {long currentTime = new Date().getTime();// 是否已經不在當前時間窗口范圍內了if (currentTime > endTime) {endTime = currentTime + DURATION;curCount = 1;return true;} else { // 處于當前時間窗口curCount = curCount + 1;return curCount < MAX_COUNT;}} }

總結

以上是生活随笔為你收集整理的限流算法-固定时间窗口的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。