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

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

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

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

概念

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

基本的流程圖如下所示

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

應(yīng)用場景

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

實現(xiàn)方式

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

消息的觸發(fā)機制

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

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

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

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

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

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

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

  • 使用隊列的數(shù)據(jù)結(jié)構(gòu)

    • lpush/rpush 將數(shù)據(jù)放入列表中
    • lpop/rpop 將數(shù)據(jù)移除列表并獲取到移除的值
    • ltrim 保留指定區(qū)間內(nèi)的元素
    • llen 獲取列表長度
    • lset 通過索引設(shè)置列表的值
    • 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{     // 失敗}
      登錄后復(fù)制

      // 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ù)制

  • 上述代碼中假如并發(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 . '加入失敗');   }
    登錄后復(fù)制

      // 開始秒殺   $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)   // 搶購成功
    登錄后復(fù)制

rabbitmq

  • 架構(gòu)及原理
    詳解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();
    登錄后復(fù)制

      // 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);    // 當(dāng)收到消息時的回調(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();   }
    登錄后復(fù)制

贊(0)
分享到: 更多 (0)
?
網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合
午夜在线播放视频欧美| 国产成人久久| 天堂资源在线亚洲| 伊人久久高清| 欧美69视频| 黄色日韩精品| 亚洲一区二区三区高清| 日韩精品一二区| 亚洲在线久久| 日本不卡高清| 国产福利一区二区精品秒拍 | 久久久精品国产**网站| 国产精品久久亚洲不卡| 欧美aⅴ一区二区三区视频| 久久精品福利| 国产在线|日韩| 中文欧美日韩| 日韩精品91亚洲二区在线观看| 国产欧美亚洲精品a| 久久精品国产亚洲aⅴ| 日本а中文在线天堂| 亚洲精品小说| 日韩精品社区| 精品视频亚洲| 日韩毛片在线| 蜜桃久久av| 日韩高清在线不卡| 国产亚洲高清一区| 成人午夜在线| 欧美日韩激情在线一区二区三区| 人人精品人人爱| 国产亚洲一区二区三区啪| 福利一区在线| 亚洲欧美日本日韩| 欧美色综合网| 日韩精品第一区| 久热精品在线| 国产精品亚洲综合色区韩国 | 91精品观看| 亚洲欧美日韩国产| 国产欧美二区| 久久精品国产99久久| 免费成人在线观看| 国产精品v一区二区三区| 国产自产自拍视频在线观看| 亚洲一区二区毛片| 久久亚洲国产精品尤物| 激情欧美国产欧美| 日本精品在线播放| 日本免费久久| 日本成人中文字幕| 波多视频一区| 亚洲精品黄色| 成人精品动漫一区二区三区| 激情五月综合网| 日本麻豆一区二区三区视频| 福利在线一区| 婷婷久久免费视频| 97精品国产| 中文一区一区三区免费在线观 | 欧美色图国产精品| 国产日韩中文在线中文字幕| 欧美日韩中文一区二区| 久久精品超碰| 亚洲精品一二三区区别| 久久福利在线| 免费欧美在线视频| 欧洲一区二区三区精品| 日韩av成人高清| 精品日韩视频| 国产精品亚洲欧美日韩一区在线| 婷婷色综合网| 久久精品国产免费| 亚洲精品伊人| 久久夜夜操妹子| 国产伦乱精品| 久久国产精品亚洲77777| 国产黄大片在线观看| 日本视频一区二区| 欧美特黄一区| аⅴ资源天堂资源库在线| 日韩成人午夜精品| aa国产精品| 三级精品视频| 欧美精品不卡| 亚洲精品一二三**| 黄色成人91| 麻豆精品蜜桃| 久久亚洲国产精品尤物| 日产欧产美韩系列久久99| 日韩一级网站| 亚洲午夜在线| 日韩在线观看一区| 久久天堂影院| 国产福利一区二区精品秒拍| 日韩精品久久理论片| 一区二区亚洲精品| 日韩在线观看| 免费日韩一区二区三区| 四虎精品一区二区免费| 国产高清一区二区| 日本美女一区| www.九色在线| 美女精品久久| 国产日韩三级| 日本色综合中文字幕| 亚洲一区二区三区在线免费| 99在线精品免费视频九九视| 精品一区亚洲| 国产一区日韩一区| 在线视频观看日韩| 久久国产日本精品| 九九精品调教| 久久人人97超碰国产公开结果| 精品亚洲精品| 老司机免费视频一区二区三区| 国产亚洲欧美日韩在线观看一区二区 | 欧美日韩在线二区| 日韩一区二区三区免费播放| 高潮一区二区| 日韩国产欧美| 成人看片网站| 激情亚洲影院在线观看| 福利一区二区三区视频在线观看| 精品久久网站| 97视频热人人精品免费| 久久青青视频| 黄毛片在线观看| 美女一区网站| 91精品国产成人观看| 亚洲调教视频在线观看| 91高清一区| 石原莉奈在线亚洲二区| 亚洲精品极品| 欧美日韩18| 免费一区二区三区在线视频| 成人午夜网址| 蜜桃成人精品| 蜜桃tv一区二区三区| 免费久久99精品国产自在现线| 美女精品在线| 91大神在线观看线路一区| 久久久91麻豆精品国产一区| 粉嫩av一区二区三区四区五区 | 高潮久久久久久久久久久久久久| 日韩深夜视频| 午夜精品影院| 亚洲三级国产| 久久99影视| 精品免费av在线| 成人av动漫在线观看| 亚洲伊人精品酒店| 国产精品欧美日韩一区| 欧美男人天堂| 免费日韩视频| 欧美视频久久| 正在播放日韩精品| 亚洲激情婷婷| 久久国产欧美日韩精品| 中文字幕在线免费观看视频| 91成人精品| 欧美啪啪一区| 三级小说欧洲区亚洲区| 蜜桃av一区二区在线观看| 欧美日本精品| 98精品视频| 在线综合视频| 日韩精品视频网站| 97精品国产| 亚洲免费影视| 欧美a一区二区| 蜜臀av免费一区二区三区| 午夜久久av | 午夜在线精品| 国产无遮挡裸体免费久久| 神马久久午夜| 国产精品腿扒开做爽爽爽挤奶网站| 亚洲bt欧美bt精品777| 精品国产18久久久久久二百| 欧美午夜不卡| 国产极品一区| 亚洲一区二区三区四区五区午夜| 国产精品网在线观看| 欧美二区视频| 国产精品一区二区美女视频免费看| 欧洲亚洲一区二区三区| 日韩av一区二| 激情五月色综合国产精品| 国产欧美另类| 欧美特黄一级| 国产一区不卡| 久久国产精品毛片| 中文字幕在线免费观看视频| 日韩免费精品| 久久精选视频| 国产精品白丝久久av网站 | 成人精品天堂一区二区三区| 日本视频一区二区| 婷婷激情综合| 大香伊人久久精品一区二区|