为了账号安全,请及时绑定邮箱和手机立即绑定

PHP秒杀设计

皮奇 PHP开发工程师
难度中级
时长 2小时30分
学习人数
综合评分9.53
20人评价 查看评价
9.6 内容实用
9.6 简洁易懂
9.4 逻辑清晰

最新回答 / 无名可用
四层负载均衡是基于IP+端口的负载均衡,处在传输层,七层负载均衡是基于URL等应用层信息的负载均衡。这里说的几层的意思都是基于OSI七层模型来说的,自上而下分别是应用层、表示层、会话层、传输层、网络层、数据链路层、物理层

已采纳回答 / 皮奇
本地redis是用来抗量,远程redis是为了防止库存超卖少卖。本地挂了不代表远程挂,远程redis可以做成集群,挂了哨兵会自动再起一个,远程切换过程中会有短暂的时间不提供服务,此时本地业务逻辑记得做异常兼容,如减库存操作减完后再还原回去。

讲师回答 / 皮奇
同学你好,多机本地减库存后,还需要统一扣库存,也就是后面的redis做统一维护,目的是防止前面的洪峰把redis冲垮。

最新回答 / qq_我的世界_11
我的PHP是7.3,nginx是1.15,我的可以从760涨到4700,ab -n1000 -c100的参数

最赞回答 / itbsl
代码层面做限流的话,可以用redis来配合做,假设你的一个接口的请求限制的一个IP1s内只能有一个请求,则可以将接口名+IP作为键存一个bool值true,并且设置生命周期为1s,每次处理请求时先从redis里根据“接口名+IP”拿值,如果该值为true,说明一秒内已经有过一次请求,这种就可以直接拒绝不继续往下处理,相反如果拿不到值了,说明之前没有请求过或者请求的时间已经是1s之前了,这种就允许通过,继续处理下面的业务。

讲师回答 / 皮奇
这个其实是个高空用的问题,属于运维层面要解决的事情,一般redis不是直连,而是通过vip连接到proxy,proxy再根究切片配置转发到redis实例,每个redis实例是一主多从,读写都在主,主挂了之后会自动通过raft算法选举出一个新的主,用于确保服务的高可用。市面上有比较成熟的解决方案,如codis,可以了解下。

已采纳回答 / 皮奇
同学你好,lua语法相对简单些,可以网上找点教程看看就行,书籍的话 《Lua程序设计》,如果想深入研究还可以找找 源码分析的书籍看看 

讲师回答 / 皮奇
同学你好,你的思路不错,可以继续去想下直接incrby改会有什么问题,老师提供的思路只是其中一个方案,真正场景实现肯定会有非常多的方案,需要大家自己思考。redis->eval本身就是执行lua脚本,redis->incrby理论上也可以防止边界条件的发生,不会造成超卖,因为incrby就实现了查询+修改的原子操作,但是有一点点小缺点就是,不能做到只要一超卖了就直接终止+1。

讲师回答 / 皮奇
不过代码在这,https://github.com/huangtao1990/seckill 只是示例代码,不能直接用于生产环境。

讲师回答 / 皮奇
同学你好,具体哪听不懂可以反馈给我,我后续慢慢优化。lua一门脚本语言,是一门短小精悍的语言,代码量非常少,可以嵌入到任何一门C开发的工具中,因此在nginx、redis中都有应用,可以快速的扩展nginx与redis这两个工具的功能。
课程须知
1、php 2、redis 3、nginx
老师告诉你能学到什么?
围绕秒杀系统核心实现,掌握高并发的核心解决思路,结合技术全景图提高大家的全局视野

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消