將同步http請求/響應模型與基於異步隊列的模型連接的好方法是什麼?使用異步隊列連接http請求/響應模型
當用戶的HTTP請求到達時,它會生成一個進入隊列的工作請求(在這種情況下爲beanstalkd)。其中一名工作人員提出要求,完成工作並準備迴應。
隊列模型不是請求/響應 - 只有請求而不是響應。所以問題是,我們如何最好地將響應反饋回HTTP世界並回饋給用戶?
思路:
Beanstalkd支持重量輕的主題或隊列(它們調用它們管)。我們可以爲每個請求創建一個管道,讓工作人員在該管道上創建消息,並使http進程坐在管道上等待響應。不要特別喜歡這個,因爲它具有圍繞內存的apache進程。
讓http客戶端輪詢響應。用戶的初始HTTP請求會啓動隊列中的作業並立即返回。客戶端(用戶的瀏覽器)定期輪詢響應。在後端,工作人員將其響應放入memcached,我們將nginx連接到memcached,因此輪詢重量輕。使用Comet。與第二個選項類似,但用更加奇特的http通信來避免輪詢。
我傾向於2,因爲它很容易,很好知道(我還沒有使用過彗星)。我猜這可能還有一個更好的明顯的模型,我沒有想到。你怎麼看?
我有同樣的問題,並在評估相同的選項的過程中。您能分享您選擇的內容,執行方式以及實施解決方案的優缺點?謝謝 – tropikalista 2013-01-04 15:53:05