消息队列的使用

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的数据存到数据库中

 

 

 

posted @ 2018-01-11 22:13  郁冬  阅读(235)  评论(0编辑  收藏  举报