服務(wù)限流之計(jì)數(shù)器方式

上一篇 <<<服務(wù)的隔離冯丙、降級(jí)和熔斷
下一篇 >>>服務(wù)限流之滑動(dòng)窗口計(jì)數(shù)


最簡(jiǎn)單最容易的一種算法,比如我們要求某一個(gè)接口,1分鐘內(nèi)的請(qǐng)求不能超過10次携御,我們可以在開始時(shí)設(shè)置一個(gè)計(jì)數(shù)器斑鼻,每次請(qǐng)求,該計(jì)數(shù)器+1穿肄;
如果該計(jì)數(shù)器的值大于10并且與第一次請(qǐng)求的時(shí)間間隔在1分鐘內(nèi)脖祈,那么說明請(qǐng)求過多肆捕,如果該請(qǐng)求與第一次請(qǐng)求的時(shí)間間隔大于1分鐘刷晋,并且該計(jì)數(shù)器的值還在限流范圍內(nèi)盖高,那么重置該計(jì)數(shù)器。
缺陷:在臨界點(diǎn)會(huì)存在問題

/**
 * 功能說明: 純手寫計(jì)數(shù)器方式<br>
 */
public class LimitService {

   private int limtCount = 60;// 限制最大訪問的容量
   AtomicInteger atomicInteger = new AtomicInteger(0); // 每秒鐘 實(shí)際請(qǐng)求的數(shù)量
   private long start = System.currentTimeMillis();// 獲取當(dāng)前系統(tǒng)時(shí)間
   private int interval = 60;// 間隔時(shí)間60秒

   public boolean acquire() {
      long newTime = System.currentTimeMillis();
      if (newTime > (start + interval)) {
         // 判斷是否是一個(gè)周期
         start = newTime;
         atomicInteger.set(0); // 清理為0
         return true;
      }
      atomicInteger.incrementAndGet();// i++;
      return atomicInteger.get() <= limtCount;
   }

   static LimitService limitService = new LimitService();

   public static void main(String[] args) {

      ExecutorService newCachedThreadPool = Executors.newCachedThreadPool();
      for (int i = 1; i < 100; i++) {
         final int tempI = i;
         newCachedThreadPool.execute(new Runnable() {

            public void run() {
               if (limitService.acquire()) {
                  System.out.println("你沒有被限流,可以正常訪問邏輯 i:" + tempI);
               } else {
                  System.out.println("你已經(jīng)被限流呢  i:" + tempI);
               }
            }
         });
      }
   }
}

推薦閱讀:
<<<高并發(fā)架構(gòu)的整體思路
<<<一個(gè)網(wǎng)站訪問慢的真正原因
<<<高并發(fā)情況下眼虱,接口的代碼會(huì)存在哪些問題
<<<壓縮靜態(tài)資源減少帶寬傳輸?shù)姆绞?/a>
<<<
動(dòng)靜分離架構(gòu)模式
<<<緩存策略匯總
<<<后端服務(wù)的雪崩效應(yīng)及解決思路
<<<服務(wù)的隔離喻奥、降級(jí)和熔斷
<<<服務(wù)限流之滑動(dòng)窗口計(jì)數(shù)
<<<服務(wù)限流之令牌桶算法
<<<服務(wù)限流之漏桶算法
<<<漏桶算法和令牌桶算法的區(qū)別
<<<自定義封裝限流算法
<<<應(yīng)用級(jí)限流
<<<接入層限流

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市捏悬,隨后出現(xiàn)的幾起案子撞蚕,更是在濱河造成了極大的恐慌,老刑警劉巖过牙,帶你破解...
    沈念sama閱讀 222,865評(píng)論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件甥厦,死亡現(xiàn)場(chǎng)離奇詭異纺铭,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)刀疙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,296評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門舶赔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人谦秧,你說我怎么就攤上這事竟纳。” “怎么了疚鲤?”我有些...
    開封第一講書人閱讀 169,631評(píng)論 0 364
  • 文/不壞的土叔 我叫張陵锥累,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我集歇,道長(zhǎng)桶略,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,199評(píng)論 1 300
  • 正文 為了忘掉前任鬼悠,我火速辦了婚禮删性,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘焕窝。我一直安慰自己蹬挺,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,196評(píng)論 6 398
  • 文/花漫 我一把揭開白布它掂。 她就那樣靜靜地躺著巴帮,像睡著了一般。 火紅的嫁衣襯著肌膚如雪虐秋。 梳的紋絲不亂的頭發(fā)上榕茧,一...
    開封第一講書人閱讀 52,793評(píng)論 1 314
  • 那天,我揣著相機(jī)與錄音客给,去河邊找鬼用押。 笑死,一個(gè)胖子當(dāng)著我的面吹牛靶剑,可吹牛的內(nèi)容都是我干的蜻拨。 我是一名探鬼主播,決...
    沈念sama閱讀 41,221評(píng)論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼桩引,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼缎讼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起坑匠,我...
    開封第一講書人閱讀 40,174評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤血崭,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體夹纫,經(jīng)...
    沈念sama閱讀 46,699評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡咽瓷,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,770評(píng)論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了舰讹。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片忱详。...
    茶點(diǎn)故事閱讀 40,918評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖跺涤,靈堂內(nèi)的尸體忽然破棺而出匈睁,到底是詐尸還是另有隱情,我是刑警寧澤桶错,帶...
    沈念sama閱讀 36,573評(píng)論 5 351
  • 正文 年R本政府宣布航唆,位于F島的核電站,受9級(jí)特大地震影響院刁,放射性物質(zhì)發(fā)生泄漏糯钙。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,255評(píng)論 3 336
  • 文/蒙蒙 一退腥、第九天 我趴在偏房一處隱蔽的房頂上張望任岸。 院中可真熱鬧,春花似錦狡刘、人聲如沸享潜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,749評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽剑按。三九已至,卻和暖如春澜术,著一層夾襖步出監(jiān)牢的瞬間艺蝴,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,862評(píng)論 1 274
  • 我被黑心中介騙來泰國(guó)打工鸟废, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留猜敢,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,364評(píng)論 3 379
  • 正文 我出身青樓盒延,卻偏偏與公主長(zhǎng)得像缩擂,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子兰英,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,926評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容