0.3.0 • Published 8 years ago

fh-cluster v0.3.0

Weekly downloads
1
License
Apache-2.0
Repository
github
Last release
8 years ago

fh-cluster

Wraps node cluster module to allow cleaner usage

Install

npm install fh-cluster --save

Usage

Import the module, pass your application entrypoint function to it:

var express = require('express');
var fhcluster = require('fh-cluster');

function exampleApp(clusterWorker) {

  var app = express();
  app.get('/', function(req, res) {
    res.status(200).send('hello from worker #' + clusterWorker.id + '\n');
  });

  app.listen(8081);
}

//If numWorkers is set to undefined, then the number of CPUs will define the number of Workers.
var numWorkers = 4;
fhcluster(exampleApp, numWorkers);

Bound Tasks

It is possible to assign tasks to a specific worker. This is useful for the case where only one instance is required (e.g. a scheduler that is intended to work on a single worker only).

Bound Tasks will attempt to bind to the preferred worker. If the preferred worker exits, the task will be assigned to another worker.

The preference of assigning a task will take into account the number of tasks assigned to other workers. The worker with the lowest number of tasks will be assigned the task.

var express = require('express');
var fhcluster = require('fh-cluster');

function exampleApp(clusterWorker) {

  var app = express();
  app.get('/', function(req, res) {
    res.status(200).send('hello from worker #' + clusterWorker.id + '\n');
  });

  app.listen(8081);
}

//If numWorkers is set to undefined, then the number of CPUs will define the number of Workers.
var numWorkers = 4;

//This task should be bound to worker 2.
var preferredWorkerId = 2;

//A unique ID identifying the task.
var startEventId = "startMySingleTask";

//This function will be executed to start the task on the preferred worker or another worker if the preferred worker is not available.
function workerFunction(worker){
    console.log("Single Bound Task Assigned To Worker " + worker.id);
};

var singleTask = {
    workerFunction: workerFunction,
    preferredWorkerId: preferredWorkerId,
    startEventId: startEventId
};


fhcluster(exampleApp, numWorkers, [singleTask]);
0.3.0

8 years ago

0.3.0-15

8 years ago

0.2.0

9 years ago

0.1.0

9 years ago