高并发 - swoole+rabbitmq+redis构建高迸发网站

 可爱爱美女_815 发布于 2022-10-25 01:13

最近耳濡目染的了解了swoole、rabbitmq,redis以前用这还算熟悉。公司是做O2O项目,我是后台组(PHP),负责为移动APP端提供数据接口,现在用户数呈指数增加,再有项目很快就无法承受高迸发访问,所以想重构。

初步的想法是:
用rabbitmq作service,处理一些耗时工作,比如:图片上传,邮件发送,日志等。
用redis作数据缓存。
swoole不知道怎么用,看了官方的一些介绍好像很适合处理高迸发项目,但是不知道怎么实用起来。

现有以下几点疑问:
1、rabbitmq怎么传递任务,比如用户上传图片,表单提交一个图片过来,怎么将这个任务加入到队列?消息应该怎么传?传送邮件如果失败了(邮件地址不正确)怎么通知前端应用?
2、三者如何组合,用什么作为接口入口?
3、或者有其他比较好的架构?

1 个回答
    1. 上传图片首先你要接收表单提交的图片,将所有信息入库,再发送图片信息到任务队列。

    比如表单传过来两个:name,img,那么为img生成一个新的文件名并保存图片,将name和图片文件名入库,将图片文件名传给消息队列(可以考虑下图片路径的问题)。后面的事情就是另外的任务去处理这些队列,将图片传到图片服务器。
    但是!图片上传用消息队列还不如用专门的图片服务器直接处理。至于邮件发送失败,如果是等邮件服务器响应这个时间有些长,可以通过站内信通知等其他手段。

    2.组合的话当然还是swoole作为入口。

    2022-10-26 14:03 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有