位置:大连达内IT培训学校 > 学校动态 > PHP的延迟队列(二)
PHP的延迟队列(二)
通过对PHP的延迟队列的学习,希望可以提升大家对PHP一些理解。
三、目标
轻量级:有较少的php的拓展就能直接运行,不需要引入网络框架,比如swoole,workman之类的
稳定性:采用master-work架构,master不做业务处理,只负责管理子进程,子进程异常退出时自动拉起
可用性:
1.支持多实例部署,每个实例无状态,一个实例挂掉不影响服务
2.支持配置多个redis,一个redis挂了只影响部分消息
3.业务方接入方便,在后台只需填写相关消息类型和回调接口
拓展性: 当消费进程存在瓶颈时,可以配置加大消费进程数,当写入存在瓶颈时,可增加实例数写入性能可线性提高
实时性:允许存在一定的时间误差。
支持消息删除:业务使用方,可以随时删除指定消息。
消息传输可靠性:消息进入到延迟队列后,增加至少被消费一次。
写入性能:qps>1000+
四、架构设计与说明
总体架构
采用master-work架构模式,主要包括6个模块:
1.dq-mster: 主进程,负责管理子进程的创建,销毁,回收以及信号通知
2.dq-server: 负责消息写入,读取,删除功能以及维护redis连接池
3.dq-timer-N: 负责从redis的zset结构中扫描到期的消息,并负责写入ready 队列,个数可配置,一般2个就行了,因为消息在zset结构是按时间有序的
4.dq-consume-N: 负责从ready队列中读取消息并通知给对应回调接口,个数可配置
5.dq-redis-checker: 负责检查redis的服务状态,如果redis宕机,发送告警邮件
6.dq-http-server: 提供web后台界面,用于注册topic
五、部署
环境依赖:PHP 5.4+ 安装sockets,redis,pcntl,pdo_mysql 拓展
ps: 熟悉docker的同学可以直接用镜像: shareclz/php7.2.14 里面包含了所需拓展
step1:安装数据库用于存储一些topic以及告警信息
执行:
mysql> source dq.sql
step2:在DqConfg.文件中配置数据库信息: DqConf::$db
step3: 启动http服务
在DqConf.php文件中修改php了路径
命令:
php DqHttpServer.php --port 8088
访问:http://127.0.0.1:8088,出现配置界面
尊重原创文章,转载请注明出处与链接:http://www.peixun360.com/1711/news/37115/违者必究! 以上就是大连达内IT培训学校 小编为您整理 PHP的延迟队列(二)的全部内容。