2016-04-15 14 views
0

サブプロセスを使用して複数のCPUを利用する必要があるノードj用のキャッシングモジュールを作成しています。プロセス間のNodeJs共有オブジェクト

possible setup

Iは、マスタプロセスにおけるインデックスにデータを保存したい、または、好ましくはそうのようなサブプロセスであろう:

var index = { key1: 21, key2: 22, key3: 55 } 

と別のプロセスは、そのインデックスを検索することができなければなりません

if('key2' in index) // do stuff 

私はIPCを使用すると共有オブジェクトを達成するよりもかなり遅いと想定しています。これも可能ですか?ありがとう。

+0

redis、memcached、またはノードキャッシュを使用するだけではどうですか?優れたサポートを備えた成熟したキャッシングフレームワーク。 –

+0

@MattiasÅslund私はそれができますが、このモジュールについては何ですか:D –

+0

なぜdownvotes? –

答えて

0

あなたのケースでは、私はredisを使用します。保存されるエントリの数や時間だけに基づいて、メモリデータをディスクに保存する頻度を設定する方法があります(http://redis.io/topics/persistence)。

インスタンス間で要求を送信して、そのメモリデータのみをマスターに保存することもできます。

マスター以外のインスタンスがデータを保存またはロードしたい場合、マスターに要求します。ここで

は、いくつかの擬似コードです:

var SharedMemory = { 
    storeObject: function(args, done) { 
    if (IAmMaster()) { 
     storeObjectToMemory(args); 
     done(); 
    } else { 
     sendRequestToMasterForSave(args, done); 
    } 
    }, 
    getObject: function(args, done) { 
    if (IAmMaster()) { 
     done(getObjectFromMemory(args)); 
    } else { 
     getResponseFromMasterForLoad(args, done); 
    } 
    } 
} 

はしかし、これはおそらくあなたがmmap-objectをしようとする場合があります痛みを伴うプロセス

0

なるつもりさ。これは、メモリマップされたファイルに基づいて共有メモリを調整します。つまり、データは永続的であり、プロセス間で共有されます。私はそれを書いて、redisやそれに類する解決策のパフォーマンスと管理オーバーヘッドの両方を避けるようにしました。

read-write versionはご希望のアプリケーションに適用できます。

関連する問題