您的位置:首页 > 编程语言 > PHP开发

PHP消息队列及应用思路

2018-03-15 18:02 253 查看

1.消息队列概念

1.1. 队列结构的中间件

1.2. 消息放入后,不需立即处理

1.3. 由订阅者/消费者按顺序处理

2.队列介质

2.1. Mysql:可靠性高,易实现,速度慢

2.2. redis:速度快,单条大消息包时效率低

2.3. 消息系统:专业性强、可靠、学习成本高(如RabbitMQ)

3.消息处理触发机制

3.1. 死循环方式读取:易实现,故障时无法及时恢复

3.2. 定时任务:压力均分,有处理量上限

3.3. 守护进程:类似于php-fpm、php-cg、supervisor,需要shell基础

4.应用

4.1. 解耦系统 - mysql

现在有订单系统和配送系统,需要使用队列消息把两个系统解耦出来

建立一个 mySql 的订单队列数据表,所有订单信息都会记录到这个订单表中,然后使用
crontab
定时把商品配送出去

4.2 商城秒杀活动 - Redis 的
list
消息队列:

4.2.1. 秒杀程序把请求写入Redis、(Uid,time_stamp) 微秒:microtime()

4.2.2. 检查Redis已存放的长度,超出上限直接丢弃

4.2.3. 死循环处理存入Redis的数据并入库

4.3. RabbitMQ架构和原理 官网传送门

特定:完整的实现AMQP、集群简化、持久化、跨平台

RabbitMQ使用

RabbitMQ 安装(rabbitmq-server、php-amqplib)

生产者向消息通道发送消息

消费者处理信息

PS:另外我觉得
beanstalkd
服务也是不错的,它是一个高性能、轻量级的分布式内存队列系统,读者可自行了解一下。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  消息队列 Redis