最近耳濡目染的了解了swoole、rabbitmq,redis以前用這還算熟悉。公司是做O2O項目,我是後台組(PHP),負責為移動APP端提供數據接口,現在用戶數呈指數增加,再有項目很快就無法承受高迸發訪問,所以想重構。
初步的想法是:
用rabbitmq作service,處理一些耗時工作,比如:圖片上傳,郵件發送,日誌等。
用redis作數據緩存。
swoole不知道怎麼用,看了官方的一些介紹好像很適合處理高迸發項目,但是不知道怎麼實用起來。
現有以下幾點疑問:
1、rabbitmq怎麼傳遞任務,比如用戶上傳圖片,表單提交一個圖片過來,怎麼將這個任務加入到隊列?消息應該怎麼傳?傳送郵件如果失敗了(郵件地址不正確)怎麼通知前端應用?
2、三者如何組合,用什麼作為接口入口?
3、或者有其他比較好的架構?
例如表單傳過來兩個:name,img,那麼為img產生一個新的檔案名稱並儲存圖片,將name和圖片檔案名稱入庫,將圖片檔案名稱傳給訊息佇列(可以考慮下圖片路徑的問題)。後面的事情就是另外的任務去處理這些佇列,將圖片傳到圖片伺服器。
但是!圖片上傳用訊息佇列不如用專門的圖片伺服器直接處理。至於郵件發送失敗,如果是等郵件伺服器回應這個時間有些長,可以透過站內信通知等其他手段。
2.組合的話當然還是swoole作為入口。