0

Heroku での SailJS アプリのスケーリングについて質問があります。

セットアップ:

  • SailJS
  • Kue (Redis キューイング システム)
  • ソケット io (sailsjs) によって接続されたクライアント
  • 2 つの dyno (それぞれが SailsJS インスタンスを実行)
  • CronJob のようなプロセス

接続された socketio クライアントに送信する必要があるプッシュ メッセージをトリガーする継続的な「cron」プロセスを自律的に実行したいと考えています。これが正しく構成されている場合、ソケット接続がRedisに存在することを認識しています。

nodejs にkueを使用し、ワーカーをトリガーしてタスクを処理します。ワーカーは、接続されたソケット クライアントにプッシュ メッセージを送信できるように、SailsJS インスタンスに配置されます。

しかし、すべての SailsJS インスタンス (dyno) が同じソケットに接続されているわけではないのではないでしょうか? 言い換えれば、すべての SailsJS インスタンスが同じ接続ソケット クライアントを利用できるのでしょうか、それとも dyno1 が接続されたクライアントのセットを持ち、他の dyno が他のクライアントのセットを持っている可能性はありますか??

例えば:

Heroku Cloud => Cron                      => Kue (Redis)
             => Dyno 1 (SailsJS instance) => client 1
                                          => client 2
             => Dyno 2 (SailsJS instance) => client 3
                                          => client 4

これをどのように解決しますか... :-D?

4

2 に答える 2

0

To give a lead to a potential answer:

Seems the guys at sails.js are working on this now! See: https://github.com/balderdashy/sails/issues/2593

I hope these guys wil enable the 'subscribers()' method in behaving in same fashion as e.g. 'message()' does.

In my opinion when the method: 'message()' enables you the send a message to client connected to another sails instance, the method 'subscribers()' should return subscribers (socket id's) connected to both sails instances or it should be really nice to have to know if a instance is able to know if a specific client is connected.

Thanks!

于 2015-02-16T22:25:23.213 に答える