Resque 工作人員的單獨伺服器
我正在嘗試為 Rails 項目劃分一些伺服器,其中一部分是考慮將 Resque 工作人員隔離到他們自己的盒子中的想法。我已經有 Redis 爆發了,但是將 Resque 工作人員放在其他地方是否很常見?它們是否需要與應用程序本身綁定?
如果可以做到,是否有任何關於該主題的普遍參考的最佳實踐或文章?如果不是,我是否最好在執行 Resque 工作程序的應用伺服器上投入更多 RAM?
我計劃使用工頭來監控所有這些並創造新貴的工作。
我正在嘗試為 Rails 項目劃分一些伺服器,其中一部分是考慮將 Resque 工作人員隔離到他們自己的盒子中的想法。我已經有 Redis 爆發了,但是將 Resque 工作人員放在其他地方是否很常見?
我會讓這個更通用一點。將作業處理工人放在與應用程序不同的機器上是否常見?絕對地。這幾乎可以在任何作業隊列處理架構中看到。
它們是否需要與應用程序本身綁定?
不。可以編寫應用程序以實時讀取並將更新傳遞給隊列……並且它本身無法處理更新。他們只是應該這樣做……
$$ wistful look into the distance $$ 在雲端。無論這一切都在一台機器上還是分佈在一個巨大的網路上,對於良好的分離設計來說都無關緊要。
如果可以做到,是否有任何關於該主題的普遍參考的最佳實踐或文章?
用否定回答這個感覺是錯誤的……但我真的不知道。每個人在擴展方面都面臨不同的挑戰。能夠編寫可擴展的東西只是對經驗的一種衡量。您可以嘗試閱讀其他人過去如何擴展應用程序的故事並嘗試從中吸取教訓,但沒有包羅萬象的“擴展 HOWTO”。
使用鬆散耦合和良好的流程分割(在流程圖意義上),以便在可能的情況下將它們斷開。不要想太多。
如果不是,我是否最好在執行 Resque 工作程序的應用伺服器上投入更多 RAM?
只要你能做到,而且沒有其他東西是瓶頸,那就去做吧。擴展與其他任何事情一樣都是成本/收益評估。但是,請仔細考慮一下,您是否會達到最大化您可以放入機器中的內容的地步,突然間,獲得一個支持更多記憶體的平台看起來非常昂貴。如果你不認為你會到達那裡,不要為此失眠。