2013-04-18 40 views
4

我正在建立一個金字塔的網絡服務。一個典型的觀點要求將會很長,大約需要15分鐘才能完成。所以我的想法是用芹菜和rabbitmq經紀人排隊。 我想知道什麼是確保不可能發生壞事的最佳方法。 具體而言,我想阻止任務隊列溢出,例如。如何處理與金字塔和芹菜長期的異步請求?

第一MESURE將確定配額的每個IP,限制請求指定的IP每小時可以提交數。

但是我無法預測涉及IP地址的數量,所以這不可能解決所有問題。

我已閱讀,這是不可能的限制與芹菜/ RabbitMQ的隊列的大小。我正在考慮在推入新項目之前檢索隊列大小,但我不確定這是否是個好主意。

我不習慣在消息/作業調度中的良好實踐。有沒有推薦的方法來處理這類問題?

回答

3

RabbitMQ的已經flow control內置的QoS。如果RabbitMQ無法處理髮布速率,它將調整TCP窗口大小以減慢發佈者的速度。在發送太多消息到服務器的情況下,它也會溢出到磁盤。這樣可以讓你的用戶變得更幼稚,儘管如果你在錯誤時重新啓動連接並且淹沒連接,你可能會導致問題。

我一直決定花更多的時間來確保發佈者/消費者可以與多個隊列服務器工作,而不是試圖讓他們更加智能化關於單個隊列服務器。好處是,如果你真的超載一臺服務器,你可以再補充另一個(或另一對如使用RabbitMQ的HA,有一個從PYCON約Messaging at Scale用芹菜和RabbitMQ的一個有用的視頻,應該是使用的。