찾다

 >  Q&A  >  본문

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

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

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

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

大家讲道理大家讲道理2798일 전877

모든 응답(1)나는 대답할 것이다

  • PHPz

    PHPz2017-04-22 09:01:34

    1. 이미지를 업로드하려면 먼저 양식을 통해 제출된 이미지를 받고 모든 정보를 데이터베이스에 저장한 다음 이미지 정보를 작업 대기열로 보내야 합니다.

    예를 들어 양식은 name과 img라는 두 가지 이름을 전달한 다음 img에 대한 새 파일 이름을 생성하고 이미지를 저장하며 이름과 이미지 파일 이름을 데이터베이스에 저장하고 이미지 파일 이름을 메시지 대기열에 전달합니다. (이미지 경로 문제를 고려할 수 있습니다). 다음은 이러한 대기열을 처리하고 사진을 사진 서버로 전송하는 또 다른 작업입니다.
    하지만! 메시지 대기열을 사용하여 이미지를 업로드하는 대신 전용 이미지 서버를 사용하여 직접 처리하는 것이 좋습니다. 이메일 발송 실패에 대해 이메일 서버의 응답을 기다리는 데 시간이 오래 걸리는 경우, 사이트 내 메시지 알림 등 다른 방법을 이용하실 수 있습니다.

    2. 물론 스울도 조합해서 입구로 사용하게 됩니다.

    회신하다
    0
  • 취소회신하다