2016-11-04 76 views
0

我正在開發一個nodejs應用程序,並且要求每個連接每秒發送約10k個請求。客戶端應用程序必須打開一個websocket連接才能發送這些請求,並且在服務器端必須僅接收數據並將其發送到隊列。服務器端的套接字連接數量並不多,可能在1k左右。我對此有幾個問題,任何幫助,非常感謝。Nodejs websocket

  • 首先,是否有可能通過單個主進程來實現此設置?由於我無法與子進程共享Web套接字連接,因此我需要從主進程中獲取帶寬。
  • 當我嘗試對nodejs ws庫進行基準測試時,我僅能夠每秒發送大約1k個請求,每秒大小爲9kb。我怎樣才能提高吞吐量?
  • 是否有任何關於如何實現最大吞吐量的例子,因爲我只能找到如何實現最大連接的帖子?

謝謝。

回答

1

你最終還是會需要擴展

首先,是有可能實現這種設置有一個主進程?

我真的不認爲它有可能通過單線程來實現這一點。 (你應該考慮結垢,永不設計從該選項限制自己)

既然不能分享我需要從主過程中的帶寬的 子進程的網絡套接字連接。

我確定您會很高興知道socket.io-redis的存在。

有了它,您將能夠在代碼的多個實例(進程或服務器)之間發送/接收事件(共享客戶端)。 Read more : socket.io-redis (Github)

我知道你正在談論WS但也許它的價值的變化socket.ioImage Source Article socket comparison

特別知道你可以同時調整垂直(增加每臺機器的線程數) 和水平(部署更多的「主人」翻過更多的機器)相對容易。 (我重複一遍:分享你的插座客戶&通信進行的跨所有實例)

當我試圖基準WS的NodeJS圖書館,我只能送每各9KB第二 大約1K的請求。我怎樣才能增加 的吞吐量?

我會建議嘗試socket.io + 插座。IO-redis的

  1. 產卵與多個工人等於CPU 核的數量的主站。 (垂直縮放)
  2. 部署您的主人橫跨2臺或更多機器(水平縮放)
  3. 瞭解負載平衡&執行基準測試。

有沒有對如何實現最大吞吐量,因爲我可以只 找到如何實現最大連接數的職位的例子?

如果增加與客戶端進行通信的實例數量,您將提高總吞吐量。 (水平+垂直縮放)

這也可能是一個有趣的閱讀:

希望它有幫助。

相關問題