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