久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合

站長資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

詳解PHP消息隊列的實現(xiàn)以及運用(附流程圖)

消息隊列的概念、原理、實現(xiàn)方式

概念

  • 隊列結構的一個中間件
  • 不需要立即消費消息
  • 由消費者或者訂閱者進行按順序消費

基本的流程圖如下所示

  • 流程
    詳解PHP消息隊列的實現(xiàn)以及運用(附流程圖)

應用場景

  • 冗余
  • 解耦
  • 流量削峰
  • 異步通信

實現(xiàn)方式

  • mysql:可靠、速度慢
  • redis:速度快,對于大消息包處理較慢
  • 消息系統(tǒng):可靠、專業(yè)性強

消息的觸發(fā)機制

  • 死循環(huán)的方式,故障時無法及時恢復
  • 定時任務:壓力均分、但是處理量有上限
  • 守護進程的方式

解耦 (訂單和配送系統(tǒng))

  • 架構設計1 采用定時任務的方式
    詳解PHP消息隊列的實現(xiàn)以及運用(附流程圖)

    php入門到就業(yè)線上直播課:進入學習
    Apipost = Postman + Swagger + Mock + Jmeter 超好用的API調(diào)試工具:點擊使用

  • 使用配送處理系統(tǒng)進行處理時,將當前數(shù)據(jù)庫里需要處理的訂單狀態(tài)更新為2,待處理完成后將狀態(tài)設為1

  • 可以每次指定更新多少條數(shù)據(jù)

流量削鋒 (redis實現(xiàn)秒殺)

  • 使用隊列的數(shù)據(jù)結構

    • lpush/rpush 將數(shù)據(jù)放入列表中
    • lpop/rpop 將數(shù)據(jù)移除列表并獲取到移除的值
    • ltrim 保留指定區(qū)間內(nèi)的元素
    • llen 獲取列表長度
    • lset 通過索引設置列表的值
    • lindex 通過索引獲取列表中的值
    • lrange 獲取指定范圍的元素
  • 圖示如下
    詳解PHP消息隊列的實現(xiàn)以及運用(附流程圖)

  • 代碼流程如下

    • 秒殺程序?qū)⒄埱髮懭雛edis(uid,time)

    • 檢查redis列表存放的長度,超過10個直接舍棄

    • 通過死循環(huán)讀取redis數(shù)據(jù),并存入數(shù)據(jù)庫

      // Spike.php 秒殺程序if(Redis::llen('lottery') < 10){     // 成功     Redis::lpush('lottery', $uid.'%'.microtime());}else{     // 失敗}
      登錄后復制

      // Warehousing.php 入庫程序while(true){     $user = Redis::rpop('lottery');     if (!$user || $user == 'nil') {         sleep(2);         continue;     }     $user_arr = explode($user, '%');     $insert_user = [         'uid' => $user_arr[0],         'time' => $user_arr[1]     ];     $res = DB::table('lottery_queue')->insert($insert_user);     if (!$res) {         Redis::lpush('lottery', $user);     }}
      登錄后復制

  • 上述代碼中假如并發(fā)過大的話會存在超賣的情況,此時可以使用文件鎖或者redis分布式鎖進行控制,先將商品放入redis list中 使用rpop進行取出,如果取不到則說明已經(jīng)賣完

  • 具體的思路及偽代碼如下

      // 先將商品放入redis中   $goods_id = 2;    $sql = select id,num from goods where id = $goods_id;   $res = DB::select($sql);   if (!empty($res)) {       // 也可以指定多少件       Redis::del('lottery_goods' . $goods_id);       for($i=0;$i<$res['num'];$i++){           Redis::lpush('lottery_goods . $goods_id', $i);       }       LOG::info('商品存入隊列成功,數(shù)量:' . Redis::llen('lottery_goods . $goods_id'));   } else {       LOG::info($goods_id . '加入失敗');   }
    登錄后復制

      // 開始秒殺   $count = Redis::rpop('lottery_goods' . $goods_id);   if (!$count) {       // 商品已搶完       ...   }    // 用戶搶購隊列   $user_list = 'user_goods_id_' . $goods_id;   $user_status = Redis::sismember($user_list, $user_id);   if ($user_status) {       // 已搶過       ...   }    // 將搶到的放到列表中   Redis::sadd($user_list, $uid);   $msg = '用戶:' . $uid . '順序' . $count;   Log::info($msg);   // 生成訂單等   ...   // 減庫存   $sql = update goods set num = num -1 where id = $goods_id and num > 0; // 防止超賣   DB::update($sql)   // 搶購成功
    登錄后復制

rabbitmq

  • 架構及原理
    詳解PHP消息隊列的實現(xiàn)以及運用(附流程圖)
    其中P代表生產(chǎn)者,X為交換機(channal),C代表消費者

  • 簡單使用

      // Send.php   require_once __DIR__.'/vendor/autoload.php';    use PhpAmqpLibConnectionAMQPStreamConnection;   use PhpAmqpLibMessageAMQPMessage;    $connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest');    // 創(chuàng)建通道   $channel = $connection->channel();   // 聲明一個隊列   $channel->queue_declare('user_email', false, false, false, false);   // 制作消息   $msg = new AMQPMessage('send email');   // 將消息推送到隊列   $channel->basic_publish($msg, '', 'user_email');    echo '[x] send email';    $channel->close();   $connection->close();
    登錄后復制

      // Receive.php   require_once __DIR__.'/vendor/autoload.php';    use PhpAmqpLibConnectionAMQPStreamConnection;   use PhpAmqpLibMessageAMQPMessage;    $connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest');    //創(chuàng)建通道   $channel = $connection->channel();    $channel->queue_declare('user_email', false, false, false, false);    // 當收到消息時的回調(diào)函數(shù)   $callback = function($msg){       //發(fā)送郵件       echo 'Received '.$msg->body.'n';   };    $channel->basic_consume('user_email', '', false, true, false, false, $callback);    // 保持監(jiān)聽狀態(tài)   while($channel->is_open()){       $channel->wait();   }
    登錄后復制

贊(0)
分享到: 更多 (0)
?
網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合
成人精品天堂一区二区三区| 日韩专区欧美专区| 午夜欧美精品久久久久久久| 久久久夜精品| 激情欧美日韩一区| 国产99精品一区| 日韩久久电影| 秋霞国产精品| 激情自拍一区| 中文精品在线| 亚洲精品系列| 国产日韩欧美三级| 精品一区视频| 久久人人97超碰国产公开结果| 精品视频网站| 日韩欧美三级| 中文欧美日韩| 日韩精品久久理论片| 国产精品伊人| 日韩亚洲一区在线| 亚洲作爱视频| 午夜久久av| 欧美aaaaaa午夜精品| 美女久久久久久| 夜鲁夜鲁夜鲁视频在线播放| 欧美久久精品一级c片| 亚洲作爱视频| 日本va欧美va瓶| 久久精品国产福利| 国产精品久久久久av电视剧| 宅男噜噜噜66国产日韩在线观看| 亚洲一级淫片| 狂野欧美性猛交xxxx| | 成人精品久久| 欧美在线影院| 97成人超碰| av高清不卡| 石原莉奈在线亚洲二区| 国产精品一区免费在线| 国产66精品| 国产精品老牛| 精品视频网站| 在线视频亚洲| 免费在线日韩av| 欧美在线资源| 国产精品久久久久久久免费软件 | 精品捆绑调教一区二区三区| 久色成人在线| 美女久久久久久| 美女网站一区| 国产精品v一区二区三区| 99久久久久国产精品| 日韩精品高清不卡| 99精品国产一区二区三区| 91国内精品| 欧美不卡高清| 麻豆精品久久久| 免播放器亚洲| 中文字幕在线官网| 日韩视频一二区| 久久蜜桃av| 91精品国产自产精品男人的天堂 | 欧美日韩尤物久久| 国产日韩欧美在线播放不卡| 日韩一区二区免费看| 成人午夜网址| 日本视频在线一区| 在线综合视频| 98精品久久久久久久| 日本中文字幕不卡| 婷婷亚洲五月| 超级白嫩亚洲国产第一| 日本不卡在线视频| 91精品1区| 欧美激情 亚洲a∨综合| 三级一区在线视频先锋| 久久蜜桃精品| 精品一区二区三区的国产在线观看 | 国产免费成人| 美国三级日本三级久久99| 首页国产精品| 久久国产精品免费一区二区三区| 午夜精品影院| 亚洲午夜天堂| 免费在线欧美黄色| 亚洲综合电影一区二区三区| 国产在线日韩精品| 国产视频网站一区二区三区| 蜜桃一区二区三区在线| 亚洲高清久久| 92国产精品| 麻豆精品在线观看| 国产日产一区| 国产一区二区三区亚洲| 国产精品第一| 国产精品一区毛片| 日韩中文字幕一区二区高清99| 99在线观看免费视频精品观看| 91精品啪在线观看国产18| 色欧美自拍视频| 欧美激情视频一区二区三区在线播放| 日韩精品一二三| 欧美日韩四区| 国产精品7m凸凹视频分类| 日韩精品水蜜桃| 亚洲1区在线| 亚洲欧美久久| 99成人在线| 免费不卡中文字幕在线| 欧美三级网址| 国产一区二区三区日韩精品| 欧美激情91| 国产精品115| 国产伦精品一区二区三区在线播放| 亚洲精品在线a| 亚洲毛片视频| 国产亚洲综合精品| 日韩在线播放一区二区| 老牛国产精品一区的观看方式| 亚洲男女av一区二区| 一区在线视频观看| 国产精品嫩草99av在线| 亚洲一区二区三区高清不卡| 国产精品美女久久久| 亚洲一区日韩| 亚洲一区欧美| 日韩精品一区二区三区中文| 日本欧美一区| 欧美国产中文高清| 国产aa精品| 亚洲一级少妇| 久久蜜桃精品| 午夜精品免费| 日av在线不卡| 黄色av一区| 亚洲字幕久久| 国产调教精品| 色婷婷综合网| 欧美二区视频| 中文字幕一区二区三区日韩精品| 日本午夜精品久久久久| 国产精品观看| 波多视频一区| 亚洲综合精品四区| 日韩精品亚洲aⅴ在线影院| 国产日韩欧美一区在线| 日本成人在线不卡视频| 日本不卡一区二区| 91成人精品观看| 国产精品一区二区99| 国际精品欧美精品| 久久在线免费| 蜜桃久久精品一区二区| 只有精品亚洲| 国产精品99久久免费观看| 超碰在线99| 红桃视频欧美| 日韩av不卡在线观看| 日韩1区2区| 国产精品普通话对白| 欧美一级全黄| 久久精品三级| 精品欧美激情在线观看| 日韩三级一区| 黄色在线观看www| 一区在线免费观看| 日本欧美一区二区| caoporn视频在线| 久久亚洲色图| 国产精品调教视频| 99久久婷婷| 欧美亚洲自偷自偷| 日韩毛片在线| 人人爱人人干婷婷丁香亚洲| 欧美日韩免费看片| 亚洲制服欧美另类| 国产精品久久久免费| 免费观看久久av| 日韩不卡手机在线v区| 神马久久午夜| 视频国产精品| 日韩欧美一区二区三区免费看| 在线免费观看亚洲| 97精品97| 日韩成人午夜精品| 欧美在线观看视频一区| 国产精品毛片视频| 久久av在线| 福利一区和二区| 在线亚洲精品| 日韩成人精品一区| 亚洲午夜久久| 日韩av首页| 国产精品videossex久久发布| 伊人影院久久| 超碰在线99| 国产剧情一区| 久久av在线| 日韩一区自拍|