<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      借助Redis做秒殺和限流的思考

      最近群里聊起秒殺和限流,我自己沒有做過類似應(yīng)用,但是工作中遇到過更大的數(shù)據(jù)和并發(fā)。

      于是提出了一個(gè)簡單的模型:

      var count = rds.inc(key);

      if(count > 1000) throw "已搶光!"

      借助Redis單線程模型,它的inc是安全的,確保每次加一,然后返回加一后的結(jié)果。如果原來是234,加一了就是235,返回的一定是235,在此中間,不會(huì)有別的請求來打斷從而導(dǎo)致返回236或者其它。

      其實(shí)我們可以理解為inc的業(yè)務(wù)就是占坑排隊(duì),每人占一個(gè)坑,拿到排隊(duì)小票后看看是不是超額了,再從業(yè)務(wù)層面輸出秒殺結(jié)果,甚至做一些更加復(fù)雜的業(yè)務(wù)。

      六條提到限流,可能基于某種考慮,希望把key對應(yīng)的count給限制在1000附近,可以接受1%偏差。

      于是有了改進(jìn)模型:

      var count = rds.inc(key);

      if(count > 1000){

          rds.dec(key);

          throw "超出限額!"

      就加了一句,超出限額后,把小票給減回去^_^

       

      采用Redis有一個(gè)好處,比如支持很多應(yīng)用服務(wù)器一起搶……

      當(dāng)然,對于很大量的秒殺,這個(gè)模型也不一定合理,比如要槍10萬部手機(jī),然后來了300萬用戶,瞬間擠上來。

      這里有個(gè)變通方法可以試一下,那就是準(zhǔn)備10個(gè)Redis實(shí)例,每個(gè)放1萬。用戶請求過來的時(shí)候,可以隨機(jī)數(shù)或者散列取模,找對應(yīng)實(shí)例來進(jìn)行搶購。

      同理可以直接更多用戶的場景。總的來說,在數(shù)據(jù)較大的時(shí)候,隨機(jī)和散列就具有一定統(tǒng)計(jì)學(xué)意義,相對來說是比較均衡的。

       

      上面是大量秒殺的簡單場景,那么小數(shù)據(jù)場景呢?比如就只有幾萬并發(fā)的場景

      小數(shù)據(jù)場景,單應(yīng)用實(shí)例,可以考慮把Redis都給省了。

      初級模型:

      Interlocked.Increase(ref count);

      if(count >= 1000) throw "搶光啦!"

      中級模型:

      private volatile Int32 count;

      var old = 0;

      do {

          old = count;

          if(old >= 1000) throw "搶光啦!"

      }while(Interlocked.CompareExchange(ref count, old + 1, old) != old);

      這個(gè)CAS原子操作可是好東西,在x86指令集下有專門指令CMPXCHG來處理,在處理器級別確保比較和交換數(shù)據(jù)的原子性。大多數(shù)系統(tǒng)想要邁過10萬tps的門檻向100萬tps靠齊,就必須得實(shí)現(xiàn)無鎖操作lock-free,其中CAS是最為簡單易懂,盡管有時(shí)候有ABA問題,但我們可以找到許多解決辦法。

       

      在實(shí)際使用場景中,可能有更復(fù)雜的需求,那就另當(dāng)別論,這里只能班門弄斧幾個(gè)簡單易用的模型。

      posted @ 2018-01-17 12:33  大石頭  閱讀(11804)  評論(36)    收藏  舉報(bào)
      主站蜘蛛池模板: 启东市| 九九久久人妻精品一区色| 久久人与动人物a级毛片| 色五月丁香六月欧美综合| 国内精品久久久久电影院| 三级黄色片一区二区三区| 在线a级毛片免费视频| 玩弄丰满少妇人妻视频| 国产精品久久无码不卡黑寡妇| 国产三级精品三级在线看| 日本福利一区二区精品| 成人午夜无人区一区二区| 国产精品人妻中文字幕| 77777亚洲午夜久久多人| 日韩精品一区二区三区蜜臀| 亚洲精品毛片一区二区 | 日日摸天天爽天天爽视频| 亚洲精品久久国产高清小说| 免费无码又爽又刺激高潮虎虎视频| 普宁市| 日韩亚av无码一区二区三区| 蜜桃网址| 亚洲精品成人福利网站| 午夜福利国产精品小视频| 欧美大胆老熟妇乱子伦视频| 久久中文字幕无码一区二区| 久热久精久品这里在线观看| 精品一区二区三区四区五区| 国产精品福利自产拍久久| 亚洲欧洲日产国码久在线| 无码人妻一区二区三区在线视频 | 国产成人剧情AV麻豆果冻| 蜜桃av无码免费看永久| 色综合中文字幕色综合激情| 日本一区二区三区在线播放| 中文国产不卡一区二区| 国产专区精品三级免费看| 精品免费国产一区二区三区四区介绍| 精品一区精品二区制服| 国产精品一二三中文字幕| 国产95在线 | 欧美|