最近耳濡目染的了解了swoole、rabbitmq,redis以前用这还算熟悉。公司是做O2O项目,我是后台组(PHP),负责为移动APP端提供数据接口,现在用户数呈指数增加,再有项目很快就无法承受高迸发访问,所以想重构。
初步的想法是:
用rabbitmq作service,处理一些耗时工作,比如:图片上传,邮件发送,日志等。
用redis作数据缓存。
swoole不知道怎么用,看了官方的一些介绍好像很适合处理高迸发项目,但是不知道怎么实用起来。
现有以下几点疑问:
1、rabbitmq怎么传递任务,比如用户上传图片,表单提交一个图片过来,怎么将这个任务加入到队列?消息应该怎么传?传送邮件如果失败了(邮件地址不正确)怎么通知前端应用?
2、三者如何组合,用什么作为接口入口?
3、或者有其他比较好的架构?
PHPz2017-04-22 09:01:34
比如表单传过来两个:name,img,那么为img生成一个新的文件名并保存图片,将name和图片文件名入库,将图片文件名传给消息队列(可以考虑下图片路径的问题)。后面的事情就是另外的任务去处理这些队列,将图片传到图片服务器。
但是!图片上传用消息队列还不如用专门的图片服务器直接处理。至于邮件发送失败,如果是等邮件服务器响应这个时间有些长,可以通过站内信通知等其他手段。
2.组合的话当然还是swoole作为入口。