1、应用场景:

适合大并发、高耗时、不需要立即返回结果的业务,例如秒杀、抢购

消息队列的使用

 2、对比:

消息队列的使用

3、触发机制

消息队列的使用

 

 4、订单系统和配送系统案例(解耦)

4.1、程序流程

消息队列的使用

消息队列的使用

4.2、分析:

order.php

将用户下单添加到一张队列表中,状态为0表示未处理

 

goods.php

Linux每分钟执行此文件,将订单状态改为2,代表处理中,防止其他执行冲突,然后mysql从中每次取2条数据出来处理,完成以后把状态更新为1,表示订单处理成功

 

任务脚本——goods.sh

消息队列的使用

 

创建每分钟执行的定时任务并保存日志

消息队列的使用

 

日志:

消息队列的使用

 

这样,订单系统出现故障的话配送系统是不会出现影响的,便实现了业务的解耦

 

5、redis的list类型实现秒杀案例

双向链表,可从头部追加元素,也可以从尾部主加元素

消息队列的使用

消息队列的使用

逻辑设计:

消息队列的使用

消息队列的使用

 

接收用户请求,将其存入redis(时间戳存微秒)

消息队列的使用

消息队列的使用

 使用死循环将redis的数据存到数据库中

消息队列的使用

消息队列的使用

消息队列的使用

 

 

 

相关文章: