全国服务热线:400-035-8011

位置:大连达内IT培训学校 > 学校动态 > PHP的延迟队列(二)

PHP的延迟队列(二)

来源:大连达内IT培训学校时间:2019/7/9 10:15:32

  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编程


  五、部署

  环境依赖: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的延迟队列(二)的全部内容。

温馨提示:提交留言后老师会第一时间与您联系!热线电话:400-035-8011