web-dev-qa-db-ja.com

プッシャーvs Pubnub vsオープンソースSocket.io / SignalR.net / Faye / jWebSocket

現在、プッシャーとPubNubを評価して、主にWebクライアントとサーバー間の双方向のリアルタイム通信を可能にします。どちらも印象的で、Pusherのドキュメントは優れているようで、PubNubのスケーラビリティと信頼性は明らかに彼らにとっての強みです。

ただし、予算を管理しているため、Pusher&PubNubのコストが問題になる可能性があるため、オープンソースの代替手段の1つを使用することを検討しています。主にSocket.io、Faye、 jWebSocket。

しかし、自分でサービスを実行することには不安があります:

  • Socket.ioまたは他のオープンソースソリューションを実際に複数のサーバーに拡張した人はいますか? PubNubは1Mメッセージを毎秒!で処理すると主張していますが、Socket.ioが機能しているのであれば、膨大な数のサーバーがなくてもそれができるとは思えません。
  • 有料サービスには、オープンソースソリューションを使用する場合に見落としがちな機能がありますか?
  • とにかくAWSでサーバーを使用している場合、遅延は本当に問題になるでしょうか? PubNubは複数の場所にあるため、米国から日本にメッセージを送信する必要がある場合、日本にサーバーを配置しても、何らかの方法でそこを移動する必要があるため、待ち時間を短縮することはできませんが、待ち時間は短縮されるはずです。

アドバイスをありがとう。

71

Node.jsを使用したFayeのセットアップは非常に簡単で、最初はテストで非常にうまく機能しました。ただし、アプリの負荷は毎秒約10件のリクエストであり、約3000のオープン接続があります-稼働中のnode.jsに切り替えると、CPU使用率は100%に固定されました(8コアのうち1コアが使用可能)。私はこれに少し失望し、もっと期待していました。

Redisを使用するか、異なるポートでノードの複数のインスタンスを実行し、アプリケーション側で負荷を分割することを検討しましたが、PubNubの価格を見ると、これらすべてをオフロードする方がはるかに簡単に思えました。

PusherとPubNubの両方を試した後、PubNubの方が安価であり、待ち時間もはるかに短いことがわかりました(私はシンガポールでホストされていますが、PushNは私にとって500ミリ秒でしたが、PubNubはアプリケーションから250ミリ秒の往復でした)。ただし、米国でホストされている場合、違いはおそらくはるかに小さいでしょう。

Ape-Serverも調べましたが、パブリッシュ/サブスクライブモデルをセットアップするための優れたチュートリアル/ドキュメントが見つからなかったため、スキップしました-しかし、おそらくあなたは私よりも賢く、より良い経験を持っているでしょう:)

21
james