- Notifications
You must be signed in to change notification settings - Fork0
run multi-threaded node.js network applications using the native cluster module
License
npkgz/cluster-magic
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
run multi-threaded node.js network applications using the nativecluster module
- Run network applications within multiple processes multiplexed by node.js
- Easy to use, configless
- Standalone, no external process managers required
- Respawn dead/failed workers
- Gracefull application shutdown via
sigterm
- Hot-Reload/Hot-Restart via
sighup
- Delayed restart of failed processes to avoid infinite restart loops
$ npm install cluster-magic --save$ yarn add cluster-magic
A working snippet is available in theexamples directory. Just runnode examples/startup.js
File: startup.js
Initializes the cluster application
const_cluster=require('cluster-magic');const_app=require('./application.js');// start the clustered app (8 workers)_cluster.init(_app,{numWorkers:8});
File: application.js
Your socket based application which should be multiplexed
constnet=require('net');functionstartup(){constserver=net.createServer((socket)=>{// connections never end});server.listen(8000);}module.exports={// init hookinit:startup};
To hot-restart (zero downtime) an application, just send aSIGHUP to the master process.This spawns new workers and disconnects all current workers from thecluster-proxy
Example
# send SIGHUP to process 12345kill -HUP 12345
- SIGHUP Restart workers
- SIGTERM Gracefull application shutdown
- SIGINT Gracefull application shutdown
cluster-magic comes with as simple delayed-restart policy which suppresses infinite restart loops.
- In case a process dies, an internal counter will be incremented.
- If a threshold of10 is reached the process restart is delayed by
counter*200ms
to avoid infinite restart loops on internal application errors.Well..this is may not what you expect from a "clustered application" but such an error requires that amanual fix will take place by the operations team (_logger.alert event is triggerd whichSHOULD be observed) - The counter is decremented by 1 once per minute.
To specify the number of workers you can easily pass the environment variableNUM_WORKERS
to the nodejs process. Default is set tonum_cpus*2
cluster-magic is OpenSource and licensed under the Terms ofThe MIT License (X11) - your're welcome to contribute
About
run multi-threaded node.js network applications using the native cluster module
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Uh oh!
There was an error while loading.Please reload this page.