最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

win10+php+lua+docker+redis+AB測(cè)試,實(shí)現(xiàn)商品秒殺代碼實(shí)現(xiàn)

2022-03-28 15:02 作者:滬猿小韓  | 我要投稿

win10+php+lua+docker+redis+AB測(cè)試,實(shí)現(xiàn)商品秒殺代碼實(shí)現(xiàn)

原創(chuàng)2022-03-26 12:05·滬猿小韓

面試的時(shí)候經(jīng)常會(huì)被問到秒殺任務(wù)的設(shè)計(jì)和實(shí)現(xiàn),我之前遇到過很多次,回答得不是很好,我目前在職的公司正好有高并發(fā)的項(xiàng)目,所以結(jié)合自己公司的項(xiàng)目加上之前面試官問的一些問題。

今天就用實(shí)際代碼來實(shí)現(xiàn)一下秒殺任務(wù)簡(jiǎn)單實(shí)現(xiàn),個(gè)人認(rèn)為掌握這個(gè)方法,面試PHP中級(jí),15K-20K基本穩(wěn)妥的。

開發(fā)環(huán)境如標(biāo)題,window10,某個(gè)成就1億人的技術(shù)網(wǎng)站調(diào)查顯示大部分人還是用windows開發(fā)。后端語(yǔ)言用的PHP7.3,redis我是用的docker desktop安裝的redis6.x,windows本地也能裝,因?yàn)楸镜匚乙惭bredis集群,所以就有docker安裝redis了,redis6在windows上還不支持集群。

性能測(cè)試工具用的AB,服務(wù)器上可以用wrk性能測(cè)試;好了,這些環(huán)境的搭建我就不細(xì)說了,初級(jí)開發(fā)的話這些工具安裝應(yīng)該輕車熟路了。

直接貼代碼,展示測(cè)試結(jié)果:


docker中的redis,端口6379,RDM工具可以直接連接到docker中的redis


RDM 連接redis


AB壓測(cè)工具,壓縮包下載放到本地,解壓就可以使用,無需安裝


cmd進(jìn)入AB的bin目錄,執(zhí)行命令

ab -n 10000 -c 200 -k "http://wt.local.com/index.php"

簡(jiǎn)單解釋下,-n后面參數(shù)是請(qǐng)求次數(shù),-c并發(fā)數(shù),同時(shí)發(fā)送請(qǐng)求數(shù),看結(jié)果

存了1000個(gè)用戶id,stock庫(kù)存為0,沒有超賣,符合秒殺要求



再看下壓測(cè)結(jié)果


最重要的參數(shù)就是Requests per second 381.8也就是QPS,每秒請(qǐng)求數(shù)。個(gè)人認(rèn)為中小公司完全夠用了。

當(dāng)然我這段實(shí)例代碼是原生的,沒有使用框架,生產(chǎn)的秒殺業(yè)務(wù)不可能這么簡(jiǎn)單,比如JWT校驗(yàn),各種規(guī)則驗(yàn)證,源于這些會(huì)導(dǎo)致接口的性能下降。起碼這能解決中小流量的并發(fā)搶購(gòu),且不超賣業(yè)務(wù)。

樂觀一點(diǎn)說,我這是本地測(cè)試,redis用的是虛擬機(jī),相比生產(chǎn)的linux環(huán)境或多或少性能要差點(diǎn)。

我司用了redis主從就夠了,大公司會(huì)用到redis集群,我在docker中也安裝了集群。后續(xù)我用redis集群來實(shí)現(xiàn)秒殺,看看性能。

win10+docker+redis集群

php 操作redis有兩種方式,一種是

<?php?

$redis_config = ['127.0.0.1:6379','127.0.0.1:6380','127.0.0.1:6381'];?

$redis = new \RedisCluster(null,$redis_config);

另一種composer安裝predis擴(kuò)展


<?php?

namespace backend\controllers;

use Predis\Client;class TestController extends BaseController

{ ? ?public function actionIndex() ? ?

? ? { ? ? ? ?

? ? ? $redis_config = [ ? ? ? ? ? ?

? ? ? 'tcp://127.0.0.1:6379', ?

? ? ? 'tcp://127.0.0.1.2:6380',?

? ? ? 'tcp://127.0.0.1.3:6381' ? ? ? ?

]; ??

? ? ?$redis = new Client($redis_config, ['cluster' => 'redis']); ?

?}?

}

后續(xù)測(cè)試下集群秒殺的性能,以及golang實(shí)現(xiàn)秒殺,不足之處,請(qǐng)批評(píng)指正


win10+php+lua+docker+redis+AB測(cè)試,實(shí)現(xiàn)商品秒殺代碼實(shí)現(xiàn)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
那坡县| 平江县| 金昌市| 剑河县| 平果县| 乐昌市| 宝丰县| 浦东新区| 孙吴县| 鄂托克前旗| 墨脱县| 当涂县| 漳平市| 文水县| 金塔县| 富顺县| 东海县| 疏附县| 肇庆市| 西丰县| 定日县| 三明市| 固原市| 长葛市| 棋牌| 叙永县| 永康市| 绥江县| 衢州市| 宁都县| 弥渡县| 乌审旗| 龙川县| 灵寿县| 焦作市| 个旧市| 河东区| 东阳市| 调兵山市| 来凤县| 剑阁县|