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

歡迎光臨散文網(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ó)家法律
乌苏市| 内乡县| 贵溪市| 崇州市| 昆明市| 上思县| 斗六市| 新密市| 昆山市| 桂林市| 招远市| 红安县| 漾濞| 扎鲁特旗| 临沭县| 靖州| 拉萨市| 麟游县| 象山县| 甘德县| 东方市| 苍南县| 射洪县| 雷山县| 合水县| 海城市| 文登市| 乌鲁木齐市| 运城市| 阿克苏市| 丰顺县| 光泽县| 榕江县| 河间市| 马公市| 潼南县| 马鞍山市| 德阳市| 贡觉县| 凤阳县| 邯郸市|