2013-08-05 124 views
0

我想用socket.io(node.js框架)每3秒向大量用戶廣播一個1Kb消息。什麼是最好的方式來擴展它(1用戶= 1'聽衆'與socket.on('periodicMessage',回調))?縮放socket.io廣播

沒有其他的CPU使用情況(一次讀取外部數據庫,每3秒鐘由其他外部模塊讀取),所以我想知道一個簡單的heroku服務器是否可以將消息廣播到10000,100 000,100萬或更多的用戶。

+0

SocketCluster與Socket.io具有類似的接口,並作爲多個並行工作負載(基於事件名稱哈希)高效共享負載:https://github.com/topcloud/socketcluster – Jon

回答

1

我們可以在單個node.js過程中輕鬆擴展到數以萬計的「聽衆」。由於每個套接字都是一個文件描述符,我不確定有多少實際上可以擴展到,並且普通的vanilla內核可以爲每個進程提供65K fd,不再有更多。

CPU不會成爲問題。如果上傳的帶寬是(1KB * 50K users/3 sec = 50M/3sec = 16MB/s upstream),我從來沒有測量過Heroku,所以不知道他們是否支持這個,我想他們會這麼做,但也許他們會限制你,因爲他們正在爲此支付亞馬遜,畢竟)。