日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁(yè) > 科技  > 軟件

如何實(shí)現(xiàn)計(jì)數(shù)器限流?

來(lái)源: 責(zé)編: 時(shí)間:2023-08-09 23:03:06 429觀看
導(dǎo)讀上一篇文章 go-zero 是如何做路由管理的? 介紹了路由管理,這篇文章來(lái)說(shuō)說(shuō)限流,主要介紹計(jì)數(shù)器限流算法,具體的代碼實(shí)現(xiàn),我們還是來(lái)分析微服務(wù)框架 go-zero 的源碼。在微服務(wù)架構(gòu)中,一個(gè)服務(wù)可能需要頻繁地與其他服務(wù)交互,而

上一篇文章 go-zero 是如何做路由管理的? 介紹了路由管理,這篇文章來(lái)說(shuō)說(shuō)限流,主要介紹計(jì)數(shù)器限流算法,具體的代碼實(shí)現(xiàn),我們還是來(lái)分析微服務(wù)框架 go-zero 的源碼。ihg28資訊網(wǎng)——每日最新資訊28at.com

在微服務(wù)架構(gòu)中,一個(gè)服務(wù)可能需要頻繁地與其他服務(wù)交互,而過(guò)多的請(qǐng)求可能導(dǎo)致性能下降或系統(tǒng)崩潰。為了確保系統(tǒng)的穩(wěn)定性和高可用性,限流算法應(yīng)運(yùn)而生。ihg28資訊網(wǎng)——每日最新資訊28at.com

限流算法允許在給定時(shí)間段內(nèi),對(duì)服務(wù)的請(qǐng)求流量進(jìn)行控制和調(diào)整,以防止資源耗盡和服務(wù)過(guò)載。ihg28資訊網(wǎng)——每日最新資訊28at.com

計(jì)數(shù)器限流算法主要有兩種實(shí)現(xiàn)方式,分別是:ihg28資訊網(wǎng)——每日最新資訊28at.com

  1. 固定窗口計(jì)數(shù)器
  2. 滑動(dòng)窗口計(jì)數(shù)器

下面分別來(lái)介紹。ihg28資訊網(wǎng)——每日最新資訊28at.com

固定窗口計(jì)數(shù)器

算法概念如下:ihg28資訊網(wǎng)——每日最新資訊28at.com

  • 將時(shí)間劃分為多個(gè)窗口;
  • 在每個(gè)窗口內(nèi)每有一次請(qǐng)求就將計(jì)數(shù)器加一;
  • 如果計(jì)數(shù)器超過(guò)了限制數(shù)量,則本窗口內(nèi)所有的請(qǐng)求都被丟棄當(dāng)時(shí)間到達(dá)下一個(gè)窗口時(shí),計(jì)數(shù)器重置。

圖片圖片ihg28資訊網(wǎng)——每日最新資訊28at.com

固定窗口計(jì)數(shù)器是最為簡(jiǎn)單的算法,但這個(gè)算法有時(shí)會(huì)讓通過(guò)請(qǐng)求量允許為限制的兩倍。ihg28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片ihg28資訊網(wǎng)——每日最新資訊28at.com

考慮如下情況:限制 1 秒內(nèi)最多通過(guò) 5 個(gè)請(qǐng)求,在第一個(gè)窗口的最后半秒內(nèi)通過(guò)了 5 個(gè)請(qǐng)求,第二個(gè)窗口的前半秒內(nèi)又通過(guò)了 5 個(gè)請(qǐng)求。這樣看來(lái)就是在 1 秒內(nèi)通過(guò)了 10 個(gè)請(qǐng)求。ihg28資訊網(wǎng)——每日最新資訊28at.com

滑動(dòng)窗口計(jì)數(shù)器

算法概念如下:ihg28資訊網(wǎng)——每日最新資訊28at.com

  • 將時(shí)間劃分為多個(gè)區(qū)間;
  • 在每個(gè)區(qū)間內(nèi)每有一次請(qǐng)求就將計(jì)數(shù)器加一維持一個(gè)時(shí)間窗口,占據(jù)多個(gè)區(qū)間;
  • 每經(jīng)過(guò)一個(gè)區(qū)間的時(shí)間,則拋棄最老的一個(gè)區(qū)間,并納入最新的一個(gè)區(qū)間;
  • 如果當(dāng)前窗口內(nèi)區(qū)間的請(qǐng)求計(jì)數(shù)總和超過(guò)了限制數(shù)量,則本窗口內(nèi)所有的請(qǐng)求都被丟棄。

圖片圖片ihg28資訊網(wǎng)——每日最新資訊28at.com

滑動(dòng)窗口計(jì)數(shù)器是通過(guò)將窗口再細(xì)分,并且按照時(shí)間滑動(dòng),這種算法避免了固定窗口計(jì)數(shù)器帶來(lái)的雙倍突發(fā)請(qǐng)求,但時(shí)間區(qū)間的精度越高,算法所需的空間容量就越大。ihg28資訊網(wǎng)——每日最新資訊28at.com

go-zero 實(shí)現(xiàn)

go-zero 實(shí)現(xiàn)的是固定窗口的方式,計(jì)算一段時(shí)間內(nèi)對(duì)同一個(gè)資源的訪問(wèn)次數(shù),如果超過(guò)指定的 limit,則拒絕訪問(wèn)。當(dāng)然如果在一段時(shí)間內(nèi)訪問(wèn)不同的資源,每一個(gè)資源訪問(wèn)量都不超過(guò) limit,此種情況是不會(huì)拒絕的。ihg28資訊網(wǎng)——每日最新資訊28at.com

而在一個(gè)分布式系統(tǒng)中,存在多個(gè)微服務(wù)提供服務(wù)。所以當(dāng)瞬間的流量同時(shí)訪問(wèn)同一個(gè)資源,如何讓計(jì)數(shù)器在分布式系統(tǒng)中正常計(jì)數(shù)?ihg28資訊網(wǎng)——每日最新資訊28at.com

這里要解決的一個(gè)主要問(wèn)題就是計(jì)算的原子性,保證多個(gè)計(jì)算都能得到正確結(jié)果。ihg28資訊網(wǎng)——每日最新資訊28at.com

通過(guò)以下兩個(gè)方面來(lái)解決:ihg28資訊網(wǎng)——每日最新資訊28at.com

  • 使用 redis 的 incrby 做資源訪問(wèn)計(jì)數(shù)
  • 采用 lua script 做整個(gè)窗口計(jì)算,保證計(jì)算的原子性

接下來(lái)先看一下 lua script 的源碼:ihg28資訊網(wǎng)——每日最新資訊28at.com

// core/limit/periodlimit.goconst periodScript = `local limit = tonumber(ARGV[1])local window = tonumber(ARGV[2])local current = redis.call("INCRBY", KEYS[1], 1)if current == 1 then    redis.call("expire", KEYS[1], window)endif current < limit then    return 1elseif current == limit then    return 2else    return 0end`

主要就是使用 INCRBY 命令來(lái)實(shí)現(xiàn),第一次請(qǐng)求需要給 key 加上一個(gè)過(guò)期時(shí)間,到達(dá)過(guò)期時(shí)間之后,key 過(guò)期被清楚,重新計(jì)數(shù)。ihg28資訊網(wǎng)——每日最新資訊28at.com

限流器初始化:ihg28資訊網(wǎng)——每日最新資訊28at.com

type (    // PeriodOption defines the method to customize a PeriodLimit.    PeriodOption func(l *PeriodLimit)    // A PeriodLimit is used to limit requests during a period of time.    PeriodLimit struct {        period     int  // 窗口大小,單位 s        quota      int  // 請(qǐng)求上限        limitStore *redis.Redis        keyPrefix  string   // key 前綴        align      bool    })// NewPeriodLimit returns a PeriodLimit with given parameters.func NewPeriodLimit(period, quota int, limitStore *redis.Redis, keyPrefix string,    opts ...PeriodOption) *PeriodLimit {    limiter := &PeriodLimit{        period:     period,        quota:      quota,        limitStore: limitStore,        keyPrefix:  keyPrefix,    }    for _, opt := range opts {        opt(limiter)    }    return limiter}

調(diào)用限流:ihg28資訊網(wǎng)——每日最新資訊28at.com

// key 就是需要被限制的資源標(biāo)識(shí)func (h *PeriodLimit) Take(key string) (int, error) {    return h.TakeCtx(context.Background(), key)}// TakeCtx requests a permit with context, it returns the permit state.func (h *PeriodLimit) TakeCtx(ctx context.Context, key string) (int, error) {    resp, err := h.limitStore.EvalCtx(ctx, periodScript, []string{h.keyPrefix + key}, []string{        strconv.Itoa(h.quota),        strconv.Itoa(h.calcExpireSeconds()),    })    if err != nil {        return Unknown, err    }    code, ok := resp.(int64)    if !ok {        return Unknown, ErrUnknownCode    }    switch code {    case internalOverQuota: // 超過(guò)上限        return OverQuota, nil    case internalAllowed:   // 未超過(guò),允許訪問(wèn)        return Allowed, nil    case internalHitQuota:  // 正好達(dá)到限流上限        return HitQuota, nil    default:        return Unknown, ErrUnknownCode    }}

上文已經(jīng)介紹了,固定時(shí)間窗口會(huì)有臨界突發(fā)問(wèn)題,并不是那么嚴(yán)謹(jǐn),下篇文章我們來(lái)介紹令牌桶限流。ihg28資訊網(wǎng)——每日最新資訊28at.com

以上就是本文的全部?jī)?nèi)容,如果覺(jué)得還不錯(cuò)的話歡迎點(diǎn)贊,轉(zhuǎn)發(fā)和關(guān)注,感謝支持。ihg28資訊網(wǎng)——每日最新資訊28at.com

參考文章:ihg28資訊網(wǎng)——每日最新資訊28at.com

  • https://juejin.cn/post/6895928148521648141
  • https://juejin.cn/post/7051406419823689765
  • https://www.infoq.cn/article/Qg2tX8fyw5Vt-f3HH673

本文鏈接:http://m.www897cc.com/showinfo-26-5165-0.html如何實(shí)現(xiàn)計(jì)數(shù)器限流?

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: 繼承與隱藏:Java中父類成員變量的神秘禁忌

下一篇: 如何使用Kafka構(gòu)建事件驅(qū)動(dòng)的架構(gòu)?

標(biāo)簽:
  • 熱門焦點(diǎn)
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
亚洲天堂av图片| 亚洲免费影视| 国产精品视频九色porn| 久久夜色精品国产欧美乱极品| 亚洲少妇在线| 亚洲一区欧美激情| 欧美亚洲免费在线| 久久久久久网站| 久久久www| 欧美va亚洲va日韩∨a综合色| 欧美日韩国产欧| 国产精品你懂得| 国产一区二区日韩| 亚洲国产精品va在线观看黑人| 亚洲国内自拍| 亚洲天堂av高清| 欧美一级片一区| 麻豆成人av| 欧美日韩色婷婷| 国产欧美日韩综合| 亚洲高清精品中出| 一二三四社区欧美黄| 午夜精品久久久久影视 | 国产精品盗摄一区二区三区| 国产精品人人爽人人做我的可爱 | 国产精品日韩精品| 国产综合久久| 日韩视频一区二区三区在线播放| 亚洲一区二区三区激情| 久久久精品一区| 欧美日韩国产精品专区| 国产亚洲成av人在线观看导航 | 久久夜色精品国产噜噜av| 欧美激情国产日韩精品一区18| 欧美性猛交99久久久久99按摩 | 国产视频一区在线观看一区免费| 久久亚洲影院| 99在线|亚洲一区二区| 欧美国产激情| 亚洲国产精品久久久久婷婷884 | 午夜精品电影| 免费亚洲电影在线| 国产亚洲精品aa| 亚洲网址在线| 欧美精品一区在线播放| 激情综合五月天| 香蕉国产精品偷在线观看不卡| 欧美久久久久久久| 亚洲风情在线资源站| 久久精品国产免费观看| 国产精品一区二区久久| 中国女人久久久| 欧美精品精品一区| 亚洲高清资源| 久久视频一区二区| 亚洲小说区图片区| 国产日韩亚洲欧美精品| 久久天天综合| 欧美日韩成人免费| 亚洲黄色天堂| 蜜臀久久99精品久久久画质超高清| 国产日韩欧美二区| 午夜视频久久久久久| 国产精品久久999| 夜夜精品视频| 欧美日韩国产在线播放网站| 亚洲国内高清视频| 免费在线观看成人av| 在线观看欧美成人| 久久久精品999| 国外成人在线视频| 久久精品最新地址| 国产一区再线| 久久精品观看| 国产综合色产在线精品| 久久精品在线| 精品成人乱色一区二区| 久久久久一区| 亚洲电影免费观看高清完整版在线| 久久久久久成人| 精品白丝av| 麻豆九一精品爱看视频在线观看免费| 国产一二精品视频| 久久久久久黄| 尤物在线观看一区| 欧美大片在线观看一区| 亚洲精选大片| 国产精品福利av| 欧美一级在线视频| 亚洲国产日韩欧美在线图片 | 在线国产精品一区| 亚洲国产成人精品久久久国产成人一区| 91久久精品国产91久久| 久久激情一区| 欧美日韩精品免费观看视频完整| 午夜久久影院| 久久久蜜桃一区二区人| 黄色工厂这里只有精品| 久久亚洲色图| 亚洲国产精品第一区二区| 欧美夫妇交换俱乐部在线观看| 亚洲精品久久在线| 欧美三级网址| 亚洲欧美综合v| 韩日欧美一区二区三区| 另类欧美日韩国产在线| 亚洲精品一二三区| 国产精品国产三级国产专播精品人 | 久久大逼视频| 亚洲国产精彩中文乱码av在线播放| 欧美福利电影在线观看| 欧美中文字幕在线视频| 亚洲美洲欧洲综合国产一区| 久久福利资源站| 国产亚洲精品久久久久婷婷瑜伽| 99视频精品在线| 欧美1区免费| 国产精品一区二区久久久| 亚洲精品1区2区| 中国日韩欧美久久久久久久久| 欧美性大战久久久久久久蜜臀| 亚洲欧美国内爽妇网| 国产亚洲激情| 欧美经典一区二区三区| 亚洲一区在线播放| 激情久久中文字幕| 欧美片在线观看| 亚洲欧美视频| 在线视频国产日韩| 国产精品国产三级国产普通话99 | 永久域名在线精品| 欧美日韩精品免费看| 欧美一区成人| 亚洲欧洲另类国产综合| 久久国产乱子精品免费女| 亚洲五月婷婷| 在线看欧美日韩| 国产精品免费看久久久香蕉| 午夜国产精品视频| 国产一级揄自揄精品视频| 久久亚洲国产精品日日av夜夜| 韩日成人av| 欧美人与禽猛交乱配视频| 欧美一区二区日韩一区二区| 影音先锋久久资源网| 国产欧美日韩不卡| 久久精视频免费在线久久完整在线看| 国产视频丨精品|在线观看| 国产裸体写真av一区二区| 一区二区三区蜜桃网| 激情久久久久久久| 国产精品成人一区二区三区夜夜夜| 久久夜色精品国产噜噜av| 亚洲一区二区三区三| 亚洲国产小视频在线观看| 国产伦精品一区二区三区在线观看| 欧美大片免费观看| 久久精品导航| 中文日韩在线| 亚洲一区欧美| 黄色日韩精品| 影音先锋日韩有码| 国产主播一区二区三区| 欧美h视频在线| 美国十次成人| 久久久精品五月天| 久久在线精品| 欧美精品成人91久久久久久久| 亚洲综合日韩在线| 91久久中文| 韩国欧美一区| 国产精品中文字幕欧美| 欧美日韩精品免费观看| 老司机凹凸av亚洲导航| 午夜免费日韩视频| 亚洲午夜久久久| 夜夜嗨av色综合久久久综合网| 在线成人免费视频| 国模叶桐国产精品一区| 国产精品自拍在线| 国产精品美女久久福利网站| 欧美日韩亚洲激情| 欧美欧美天天天天操| 欧美不卡福利| 欧美+日本+国产+在线a∨观看| 久久久精品性| 久久久久久久一区二区三区| 欧美一区二区三区视频在线| 午夜免费电影一区在线观看| 亚洲影院免费| 久久综合激情| 亚洲国产裸拍裸体视频在线观看乱了| 在线一区二区三区四区| 亚洲欧美视频在线观看| 女人色偷偷aa久久天堂| 蜜臀久久99精品久久久久久9| 欧美国产日韩a欧美在线观看| 国产精品r级在线| 欧美久久九九| 狠狠色噜噜狠狠色综合久| 亚洲国产一区二区视频| 亚洲精品激情| 久久久精品网| 欧美激情精品久久久久久久变态|