您好,歡迎來(lái)到易龍商務(wù)網(wǎng)!
發(fā)布時(shí)間:2020-12-07 11:52  
【廣告】





分析之前
依我個(gè)人的理解來(lái)說(shuō)限流的話應(yīng)該靈活到可以針對(duì)每一個(gè)接口來(lái)做。比如說(shuō)一個(gè)類(lèi)里面有5個(gè)接口,那么我的限流插件就應(yīng)該能針對(duì)每一個(gè)接口就行不同的限流方案。在這個(gè)特定的項(xiàng)目中,這個(gè)團(tuán)隊(duì)的開(kāi)發(fā)人員以前都沒(méi)有NoSQL經(jīng)驗(yàn),但是有大量的SQLServer經(jīng)驗(yàn)。所以呢,既然針對(duì)的每個(gè)接口所以就需要一個(gè)可以標(biāo)示這個(gè)接口的key(我取的是類(lèi)名 方法名 入?yún)ⅲ?
分布式限流強(qiáng)烈推薦使用redis lua或者nginx lua來(lái)實(shí)現(xiàn)。
這里用2個(gè)限流條件來(lái)做示例講一下常見(jiàn)的限流算法:
接口1它10秒鐘很大允許訪問(wèn)100次
接口2它10秒鐘很大允許每個(gè)人訪問(wèn)100次。
計(jì)數(shù)器算法
這個(gè)算法可以說(shuō)是限流算法中簡(jiǎn)單的一種算法了。
核心思想
計(jì)數(shù)器算法的意思呢就是當(dāng)接口在一個(gè)時(shí)間單位中被訪問(wèn)時(shí),我就記下來(lái)訪問(wèn)次數(shù),直到它訪問(wèn)的次數(shù)到達(dá)上限。
涉及變量
接口(key)
時(shí)間單位(expire)
允許訪問(wèn)多少次(limit)
訪問(wèn)次數(shù)(value)
條件一
當(dāng)一個(gè)請(qǐng)求過(guò)來(lái)時(shí),我們就會(huì)得到這個(gè)key。
123456789 if(存在key){ value ; if(value>=limit){ 不能訪問(wèn) } }else{ 添加key,value為1 設(shè)置key過(guò)期時(shí)間為expire }

快進(jìn)5個(gè)月……
該系統(tǒng)開(kāi)始經(jīng)歷許多關(guān)于維護(hù)CRUD操作完整性的問(wèn)題。設(shè)計(jì)用來(lái)處理事務(wù)的瘦應(yīng)用程序邏輯層已經(jīng)不再那么薄了。升級(jí)和向后兼容性的故事開(kāi)始變得更加復(fù)雜。
由于受到許多其他問(wèn)題的困擾,工程師們又回到了繪圖板——這次是用Azure SQL替換存儲(chǔ)層!我不記得具體的細(xì)節(jié),但是這個(gè)改變?cè)黾恿舜蠹s40%的額外時(shí)間和成本。
管理層很不高興,這個(gè)項(xiàng)目幾乎掉了。但是團(tuán)隊(duì)的工程師們非常好,他們能夠完成這個(gè)項(xiàng)目,盡管有了一些延遲和初的錯(cuò)誤的技術(shù)決定。
這個(gè)項(xiàng)目有一個(gè)圓滿的結(jié)局——但它也可能不是這樣的。事實(shí)上,很多內(nèi)部項(xiàng)目都被關(guān)閉了,因?yàn)樗麄儾荒茉诔兄Z的日期范圍內(nèi)交付承諾的功能。
那么,您如何知道NoSQL解決方案適合您的下一個(gè)軟件項(xiàng)目呢?首先問(wèn)問(wèn)你自己和你的團(tuán)隊(duì)這十個(gè)問(wèn)題:
一般來(lái)說(shuō),在系統(tǒng)的設(shè)計(jì)范圍之內(nèi),吞吐量隨系統(tǒng)的并發(fā)用戶數(shù)的增加呈現(xiàn)增加趨勢(shì),也就是說(shuō)你客戶端來(lái)多少請(qǐng)求數(shù)系統(tǒng)吃(處理)多少請(qǐng)求數(shù);當(dāng)超出這個(gè)范圍時(shí)有兩種情況,一種是系統(tǒng)只能處理這么多,超過(guò)這個(gè)數(shù)系統(tǒng)不接收了,后隨著并發(fā)用戶數(shù)的增多吞吐量是一個(gè)水平的直線;二、正厚軟件業(yè)務(wù)范圍:軟件測(cè)試:專業(yè)技能提升、專業(yè)咨詢服務(wù)、專業(yè)企業(yè)內(nèi)訓(xùn)、軟件測(cè)試外包、測(cè)試人才外包等。
還有一種情況是不管來(lái)多少系統(tǒng)都接收后導(dǎo)致系統(tǒng)吞吐量下降甚至系統(tǒng)崩潰。并發(fā)用戶數(shù)是客戶端單位時(shí)間內(nèi)對(duì)服務(wù)器端施加的壓力,具體能不能接受并處理要看被測(cè)系統(tǒng)的吞吐量,而吞吐量是被測(cè)系統(tǒng)單位時(shí)間內(nèi)處理的請(qǐng)求數(shù)或者說(shuō)單位時(shí)間內(nèi)處理的字節(jié)數(shù);組織你的思路既然你的大量時(shí)間都是用在溝通、研究和多任務(wù)上,你需要一些工具來(lái)幫助一切井然有序。一個(gè)著重于客戶端的操作即測(cè)試手段,一個(gè)著重于應(yīng)用系統(tǒng)的處理能力即查看對(duì)象;(上面的討論沒(méi)有考慮兩者的單位,如一個(gè)用戶同時(shí)有多個(gè)請(qǐng)求情況)