3

ノードクラスターを介して実行したいノードプロジェクトに取り組んでいます。各ノードクラスター (ワーカー) で使用できる共有リソースと構成があるため、起動時にこれらの構成を読み取り、redis db に保存します。さらに、他のいくつかのモジュールでは、いくつかの外部リソースにクエリを実行し、いくつかのデータを取得して、redis db にも保存する必要があります (起動時ではなく、必要な場合)。この再シーズンでは、起動時に構成セクションを関数に入れ、クラスターが Master(cluster.isMaster) の場合はそれを呼び出します。

if (cluster.isMaster) 
configure();

私の質問は、他のモジュールで同じことを行うにはどうすればよいですか? 他のモジュールでは、外部リソースにクエリを実行し、マスター クラスターだけで redis に配置する必要があります。これは、その後ワーカー クラスターでも使用できるようになるためです。したがって、すべてのクラスターでクエリを実行する必要はありません。

それでは、よろしくお願いします。

4

1 に答える 1

2

API http://nodejs.org/api/cluster.htmlから

cluster.isMaster# Boolean プロセスがマスターの場合は true。これは、process.env.NODE_UNIQUE_ID によって決定されます。process.env.NODE_UNIQUE_ID が定義されていない場合、isMaster は true です。

モジュールでは、 をチェックできますが、起動後に常に削除され、常に未定義であるため、直接require('cluster').isMasterチェックしないでください。https://github.com/nodejs/node/blob/16689e30aeff​​03c8c47a605425727cf190c169e9/lib/internal/bootstrap_node.js#L129process.env.NODE_UNIQUE_ID

于 2014-01-25T07:59:06.297 に答える