PHP消息队列及应用思路

xiaoxiao2021-02-28  42

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 服务也是不错的,它是一个高性能、轻量级的分布式内存队列系统,读者可自行了解一下。

转载请注明原文地址: https://www.6miu.com/read-2613872.html

最新回复(0)