我目前正在研究一個需要實時執行文件處理的項目。這裏的工作流程,我想實現事件驅動的處理架構建議
a. User requests a file to be processed to Server A (web)
b. Server A forwards the request to Server B
c. Server B finishes and signals Server A that it’s done
d. Server A signals the user that the file is ready (web)
什麼我找什麼?我需要找到一個簡單的事件驅動的方式來在服務器A的服務器B(即步驟b & c)之間進行通信。僅供參考我將使用socket.io通過網絡在步驟a & d上與用戶進行通信。
我將使用的環境是運行node.js服務的Ubuntu 14.04服務器(注意,只要存在接口,解決方案不必嚴格地爲節點)。
似乎夠簡單嗎?這是它變得複雜的地方。每一組服務器(現在都將它們視爲Web服務器與處理服務器)將在雲中進行復制(每個服務器都有很多)。需要注意的是,當處理服務器完成一個文件的處理時,它必須發信號給所有網絡服務器該文件已準備就緒。爲什麼?每個Web服務器可能已經爲等待相同文件的請求提供服務。
我需要達到這個流程在最短的時間內(即事件驅動,而不是輪詢)與node.js的接口,並運行在Ubuntu的解決方案。有什麼想法?
Redis可以解決這個問題..但有兩點使它成爲一個顯示塞的一點點。 1 - 這是一個有點矯枉過正,因爲它是一個完整的關鍵/價值存儲&2 - 它使用集中式經紀模式運行(您有一個點存儲和分發消息) – 2014-09-03 21:20:53
但是,這確實導致我zeroMQ這是類似的到rabbitMQ(Redis用於消息傳遞),但可以分散。更多在這裏http://zeromq.org/whitepapers:brokerless – 2014-09-03 21:22:12
去標記這是答案..結束了與zeroMQ brokerless模型去http://zeromq.org/whitepapers:brokerless – 2014-09-11 21:03:27