※ 引述《tas72732002 (蔥頭)》之銘言:
: 最近看到有人使用訊息佇列(message queue)的方式來提升效能, 如gearman
: 而我目前的做法是利用php exec()透過linux背景執行,降低response的時間,
: 我想請問一下兩者的差異是差在gearman可以建立分散式系統環境,
: queue伺服器可以水平擴充, 提升更好的效能,
: 而exec則是在本機, 還是會影響本機伺服器效能,
: 是差在這兩個地方嗎? 目的都是降低php response時間,
: 不知道這樣見解有錯誤嗎?
exec() 不會在「背景」執行,php 會等 exec() 裡面的指令跑完才繼續下去
message queue 會增加網頁反應速度的原因不是因為可以擴充很多機器
而是因為我現在不去做那些工作,晚點再做,不論是丟給別人做還是自己做
例如使用者在社群網站上按下備份按鈕,網頁可以不用等到整份備份做完才顯示結果
而是先把「備份」這個工作丟進 queue 裡面,然後畫面立刻顯示「請先稍候」
等到備份工作跑個二十分鐘完成之後再寄信給 user
不過相對的,扔進 message queue 裡面的東西還是需要被執行
如果執行工作的 worker 機器很慢,那麼備份工作可能要等一小時才能完成
如果工作進來的速度太快,例如五秒就有一個人按備份,那工作會永遠做不完
所以你會考慮是否需要增加做備份工作的機器,message queue 能簡化這件事情的處理
故工作丟進 message->網頁反應速度變快,這是對的
而增加 worker 機器->執行工作的效能增加,這也是對的
但增加 worker 機器->網頁反應速度變快,這是錯的,這是兩件事情
--
將各種精密的儀器,裝置在他的體內,然後再注射特殊的動物激素,跟著經過電光的感應
這個人便產生了一股火不能融、水不能淹、電不能擊、雷不能毀的巨大力量
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.27.92.61
※ 文章網址: http://www.ptt.cc/bbs/PHP/M.1410883426.A.002.html
※ 編輯: GALINE (114.27.92.61), 09/17/2014 00:04:24