zeromqをチェックすると、あなたが望むことをするための簡単で高性能なIPC抽象化が提供されるはずです。特に、the pub/sub exampleが有用である。
Herokuが複数のサーバーインスタンスを生み出す方法について知らずに想像していた主な課題は、誰がパブリッシャーであるかを判断するロジックです(残りのインスタンスはサブスクライバーになります)。議論のために、ホスティングプロバイダがINSTANCE_NUM
という環境変数を与えているとしましょう。これは、プロセスのインスタンス番号を示す[0,1024]
の整数です。インスタンスゼロがメッセージ発行者であるとします。
var zmq = require('zeromq')
if (process.env['INSTANCE_NUM'] === '0') { // I'm the publisher.
var emitter = getEventEmitter(); // e.g. an HttpServer.
var pub = zmq.createSocket('pub');
pub.bindSync('tcp://*:5555');
emitter.on('someEvent', function(data) {
pub.send(data);
});
} else { // I'm a subscriber.
var sub = zmq.createSocket('sub');
sub.subscribe('');
sub.on('message', function(data) {
// Handle the event data...
});
sub.connect('tcp://localhost:5555');
}
私はzeromqが初めてで、上記のコードはデモンストレーションのためだけに完全にテストされていないことに注意してください。
興味深い質問です。あなたがデータベースを考慮していて、統計情報などを含んでいれば、それで各プロセスが現在とその後にpingしているのだろうか? – Marshall
はい、それはノードのリアルタイムawesomenessを敗北させるでしょう。本質的にポーリング以外のものではありません。 –
[この投稿](http://stackoverflow.com/questions/8490093/node-js-share-sockets-between-processes)が適切かもしれません。 – Marshall