4

herokuでNode.jsアプリをスケーリングする際に問題が発生しました。RedisStoreを使用して、ノードプロセス間でソケット接続を永続的に維持しています。私は2、3プロセスにスケーリングしています。私はここhttps://gist.github.com/1391583でこのコードに従いました。1つのプロセスですべてが正常に機能しますが、スケールアウトすると、ブロードキャストは他のノードに到達しません。ただし、接続情報は永続的であり、ハンドシェイクエラーや切断が頻繁に発生することはありません。

私の理解では、socket.io RedisStoreは、複数のプロセスの同期を維持するために、内部でredis Pub/Subも処理します。ここで述べたようにhttps://groups.google.com/forum/?fromgroups&hl=en#!topic/socket_io/gymBTlruYxs ちなみに、私は#848 socket.ioパッチを適用しましたが、自分。

2012年5月14日の時点で、Herokuはsocket.ioのxhrポーリングトランスポートのみをサポートしています。これは私が使用しているものです。では、この問題は長いポーリングだけで発生するのでしょうか?これに対する回避策はありますか?

前もって感謝します。

4

2 に答える 2

1

これが完全に無関係である場合は申し訳ありませんが、スケーラビリティ、ノード、redis、pub / subが必要な問題を見つけたとき、私はBesedaを思い浮かべます-これはあなたが調べるべきものですか?

于 2012-05-15T08:12:03.713 に答える
0

独自のRedisレイヤーを実装することでこれを解決しました。さまざまなインスタンスにデプロイされたすべてのノードサーバーが中央のRedisサーバーにサブスクライブし、ソケットの代わりにRedisからのメッセージをリッスンしました。これは、WebSocketとxhrポーリングで機能しました。

于 2014-02-24T18:58:26.343 に答える