thinkphp6 秒杀
项目环境
php语言框架 thinkphp6.0+ 消息队列中间件 RabbitMQ 秒杀商品缓存:Redis 秒杀接口压测工具:JMeter使用项目
1. 安装thinkphp框架
composer install
2. 导入数据 ( seckill.sql ), 并进行.env数据库配置
3. redis安装 和 php的redis扩展安装,并进行.env数据库配置
4. RabbitMQ安装 和 rabbitmq的php扩展库,php -m 有amqp说明安装成功
5. 安装框架使用rabbitmq 封装的composer包
composer require php-amqplib/php-amqplib
6. 下载JMeter压测使用
业务梳理
1. 预热缓存数据,把秒杀商品的 库存和秒杀时间 存入缓存中。
2. 秒杀接口提交地址字段address 和 商品sku sku_id,并进行数据校验
3. 在缓存里校验秒杀商品是否存在、是否有库存、是否在秒杀时间内
4. 在缓存里判断用户是否已经秒杀过
5. 把用户id、sku_id、address写入RabbitMQ的消息队列
6:处理消息使用RabbitMQ的work工作模式,一个生成者多个消费者,用于处理在短时间的HTTP请求中无法处理的复杂任务。
7:处理消息,RabbitMQ消息持久化和重复消息处理
8:校验商品库存 高并发下 redis还在减库存, 这一步再利用redis原子性校验库存,避免库存不足走到数据库操作耗性能。
9:MySQL事务秒杀下单:减库存(乐观锁,防止库存超卖)、订单表、订单子表。
10:更新redis缓存:秒杀商品库存缓存、用户下单缓存
JMeter压测
1:安装JMeter进行压测
2:在进行php-fpm进程数调优、mysql连接数调优、开启opcache, 同等配置情况下还是远远及go版下的秒杀
版权声明:
1、该文章(资料)来源于互联网公开信息,我方只是对该内容做点评,所分享的下载地址为原作者公开地址。2、网站不提供资料下载,如需下载请到原作者页面进行下载。
3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考学习用!
4、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。