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?