【廣告】
分析之前
依我個人的理解來說限流的話應(yīng)該靈活到可以針對每一個接口來做。比如說一個類里面有5個接口,那么我的限流插件就應(yīng)該能針對每一個接口就行不同的限流方案。所以呢,既然針對的每個接口所以就需要一個可以標示這個接口的key(我取的是類名 方法名 入?yún)ⅲ?/p>
分布式限流強烈推薦使用redis lua或者nginx lua來實現(xiàn)。
這里用2個限流條件來做示例講一下常見的限流算法:
接口1它10秒鐘很大允許訪問100次
接口2它10秒鐘很大允許每個人訪問100次。
計數(shù)器算法
這個算法可以說是限流算法中簡單的一種算法了。
核心思想
計數(shù)器算法的意思呢就是當接口在一個時間單位中被訪問時,安慶軟件測試工程師,我就記下來訪問次數(shù),鹽城軟件測試工程師,直到它訪問的次數(shù)到達上限。
涉及變量
接口(key)
時間單位(expire)
允許訪問多少次(limit)
訪問次數(shù)(value)
條件一
當一個請求過來時,我們就會得到這個key。
123456789 if(存在key){ value ; if(value>=limit){ 不能訪問 } }else{ 添加key,value為1 設(shè)置key過期時間為expire }
您的數(shù)據(jù)事務(wù)是基于什么?或者,江蘇軟件測試工程師,您需要什么級別的事務(wù)支持?如果您的系統(tǒng)需要ACID屬性,那么您很好還是堅持使用RDBMS解決方案。否則,您將花費大量的時間試圖在您的應(yīng)用程序/業(yè)務(wù)邏輯層重制ACID保證,并且您可能仍然沒有RDBMS解決方案那么。#3: 您需要Web/高可伸縮性嗎?總是在先計算出您需要什么樣的可伸縮性。在這個特殊的例子中,軟件測試工程師,我們正在為微軟內(nèi)部游戲工作室構(gòu)建系統(tǒng)。有10到15個游戲工作室正在考慮中——這取決于有多少注冊用戶使用這個系統(tǒng)每個工作室多有3-5個活躍的游戲標題。每個游戲標題為三個環(huán)境存儲遙測模式——開發(fā)、預生產(chǎn)(PPE)和生產(chǎn)對于每個標題,將會有2-5個數(shù)據(jù)科學家同時修改游戲標題數(shù)據(jù)每一個標題事件都有大約50 KB的max事件數(shù)據(jù)我們被要求存儲所有的版本——我們估計這個數(shù)字是1000除以一個標題的生命周期有了以上粗略的估計,我們就可以計算并發(fā)性和存儲需求:
總并發(fā)數(shù) = 工作室數(shù)量 * 標題數(shù)量每工作室 * 用戶數(shù)量每標題
= 15 * 5 * 5 = 375 并發(fā)用戶
大存儲 = 工作室數(shù)量 * 標題數(shù)量每工作室 * 環(huán)境數(shù)量 * 事件存儲大小每版本* 需要存儲的版本數(shù)
= 15 * 5 * 3 * 50 KB * 1000 = 11250000 KB = 11.25 GB大存儲
SQL Azure支持1024個并發(fā)打開連接,并且能夠很容易地支持并發(fā)需求。另外,在考慮云計算時,11.25 GB實際上是一個非常小的數(shù)字。
這個系統(tǒng)并不是下一個FaceBook或必應(yīng)——那么NoSQL的路線真的值得嗎?
企業(yè): 南京正厚軟件技術(shù)有限公司
手機: 13357804560
電話: 025-86665061
地址: 南京鼓樓區(qū)湖南路16號5樓