0.16.0 • Published 11 years ago

clustr-node v0.16.0

Weekly downloads
48
License
-
Repository
-
Last release
11 years ago

Build Status

clustr-node

That project is new and currently under development.

CoffeeScript cluster module to manage multi process cluster in NodeJs. Clustr is responseable for worker spawning and messaging between all processes.

install

npm install clustr-node

usage

require

To require the module, just do.

Clustr = require("clustr-node")

master

Create the master process.

master = Clustr.Master.create
  name: "master"

Public messages are send to each living process. To make the master listen to public messages do.

master.onPublic (message) =>
  # do something with public message when it was received

Private messages are for a specific role only that is defined by its name. To make the master listen to private messages do.

master.onPrivate (message) =>
  # do something with private message when it was received

The master is able to receive for confirmations. To listen to a confirmation just do the following. As described, the callback is executed when the message "identifier" was received 2 times.

master.onConfirmation 2, "identifier", () =>
  # do something when message "identifier" was received 2 times

To make the master publish a message to a channel do.

master.publish("channel", "message")

Each process is able to spawn workers. Spawning a worker requires a file the worker should execute. Optionally workers can be cpu bound. Cpu affinity is set using the taskset command, which only works under unix systems. To make the master spawn workers, do something like that.

master.spawn [
  { file: "./web_worker.coffee",   cpu: 1 }
  { file: "./web_worker.coffee",          }
  { file: "./cache_worker.coffee", cpu: 2 }
  { file: "./cache_worker.coffee",        }
]

worker

Create a worker process.

worker = Clustr.Worker.create
  name: "worker"

Public messages are send to each living process. To make a worker listen to public messages do.

worker.onPublic (message) =>
  # do something with public message when it was received

Private messages are for a specific role only that is defined by its name. To make a worker listen to private messages do.

worker.onPrivate (message) =>
  # do something with private message when it was received

To make a worker publish a message to a channel do.

worker.publish("channel", "message")

Each process is able to spawn workers. Spawning a worker requires a file the worker should execute. Optionally workers can be cpu bound. Cpu affinity is set using the taskset command, which only works under unix systems. To make a worker spawn workers, do something like that.

worker.spawn [
  { file: "./web_worker_child.coffee",   cpu: 1 }
  { file: "./web_worker_child.coffee",          }
  { file: "./cache_worker_child.coffee", cpu: 2 }
  { file: "./cache_worker_child.coffee",        }
]

examples

For examples take a look into the examples/ directory and play around.

tests

Tests are located in spec/ directory. To run it just do.

npm test
0.16.0

11 years ago

0.15.0

11 years ago

0.14.0

11 years ago

0.13.0

11 years ago

0.12.0

11 years ago

0.11.0

11 years ago

0.10.0

11 years ago

0.9.0

11 years ago

0.8.0

11 years ago

0.7.0

11 years ago

0.6.0

11 years ago

0.5.0

11 years ago

0.4.0

11 years ago

0.3.0

11 years ago

0.2.0

11 years ago

0.1.0

11 years ago