3.0.0-alpha.0 • Published 7 years ago

doodad-js-cluster v3.0.0-alpha.0

Weekly downloads
2
License
Apache-2.0
Repository
github
Last release
7 years ago

Cluster manager (alpha).

NPM Version

<<<< PLEASE UPGRADE TO THE LATEST VERSION AS OFTEN AS POSSIBLE >>>>

Installation

$ npm install doodad-js-cluster

Features

  • IPC master <==> worker.
  • Console to master.
  • Ping workers.

Example (IPC) :

master.js

    module.exports = {
        run: function run(root) {
            const nodeJsCluster = require('cluster');
        
            const doodad = root.Doodad,
                server = doodad.Server,
                ipc = server.Ipc,
                cluster = doodad.NodeJs.Cluster;

            const MyService = doodad.Object.$extend(
                    ipc.MixIns.Service,
            {
                $TYPE_NAME: 'MyService',
    
                hello: ipc.CALLABLE(function hello(request) {
                    request.end("Hello world !");
                }),
            });

            const messenger = new cluster.ClusterMessenger(MyService);
            messenger.connect();
        
            nodeJsCluster.fork();
            nodeJsCluster.fork();
        },
    };

worker.js

    module.exports = {
        run: function run(root) {
            const nodeJsCluster = require('cluster');
            
            const doodad = root.Doodad,
                cluster = doodad.NodeJs.Cluster;

            const messenger = new cluster.ClusterMessenger();
            messenger.connect();

            function proceed() {
                setTimeout(function() {
                    messenger.callMethod('hello', [], {callback: function(err, result) {
                        console.log('<W:' + String(nodeJsCluster.worker.id) + '> ' + result);
                        proceed();
                    }});
                }, 500);
            };
            
            proceed();
        },
    };

index.js

    const nodeJsCluster = require('cluster');

	const modules = {};
	require('doodad-js-io').add(modules);
	require('doodad-js-server').add(modules);
	require('doodad-js-ipc').add(modules);
	require('doodad-js-cluster').add(modules);
	
    require('doodad-js').createRoot(modules)
		.then(root => {
			if (nodeJsCluster.isMaster) {
				require('./master.js').run(root);
			} else {
				require('./worker.js').run(root);
			};
		})
		.catch(err => {
			console.error(err);
		});

Example (Console) :

master.js

	module.exports = {
		run: function run(root) {
			const nodeJsCluster = require('cluster');
			
			const cluster = root.Doodad.NodeJs.Cluster;

			const messenger = new cluster.ClusterMessenger();
			messenger.connect();
			
			nodeJsCluster.fork();
			nodeJsCluster.fork();
		},
	};

worker.js

	module.exports = {
		run: function run(root) {
			const nodeJsCluster = require('cluster');
			
			const doodad = root.Doodad,
				cluster = doodad.NodeJs.Cluster,
				ioInterfaces = doodad.IO.Interfaces;

			const messenger = new cluster.ClusterMessenger();
			messenger.connect();

			const con = messenger.getInterface(ioInterfaces.IConsole);

			function proceed() {
				setTimeout(function() {
					con.log('<W:' + nodeJsCluster.worker.id + '> Hello world !');
					
					proceed();
				}, 500);
			};
			
			proceed();
		},
	};

index.js

    const nodeJsCluster = require('cluster');

    const modules = {};
	require('doodad-js-io').add(modules);
	require('doodad-js-server').add(modules);
	require('doodad-js-ipc').add(modules);
	require('doodad-js-cluster').add(modules);
	
    require('doodad-js').createRoot(modules)
		.then(root => {
			if (nodeJsCluster.isMaster) {
				require('./master.js').run(root);
			} else {
				require('./worker.js').run(root);
			};
		})
		.catch(err => {
			console.error(err);
		});

Other available packages

  • doodad-js: Object-oriented programming framework (release)
  • doodad-js-cluster: Cluster manager (alpha)
  • doodad-js-dates: Dates formatting (beta)
  • doodad-js-http: Http server (alpha)
  • doodad-js-http_jsonrpc: JSON-RPC over http server (alpha)
  • doodad-js-io: I/O module (alpha)
  • doodad-js-ipc: IPC/RPC server (alpha)
  • doodad-js-json: JSON parser (alpha)
  • doodad-js-loader: Scripts loader (beta)
  • doodad-js-locale: Locales (beta)
  • doodad-js-make: Make tools for doodad (alpha)
  • doodad-js-mime: Mime types (beta)
  • doodad-js-minifiers: Javascript minifier used by doodad (alpha)
  • doodad-js-safeeval: SafeEval (beta)
  • doodad-js-server: Servers base module (alpha)
  • doodad-js-templates: HTML page templates (alpha)
  • doodad-js-terminal: Terminal (alpha)
  • doodad-js-test: Test application
  • doodad-js-unicode: Unicode Tools (beta)
  • doodad-js-widgets: Widgets base module (alpha)
  • doodad-js-xml: XML Parser (beta)

License

Apache-2.0

3.0.0-alpha.0

7 years ago

2.3.0-alpha.0

7 years ago

2.2.0-alpha.0

7 years ago

2.1.0-alpha.0

7 years ago

2.0.0-alpha.0

7 years ago

1.7.0

8 years ago

1.6.0

8 years ago

1.5.6

8 years ago

1.5.5

8 years ago

1.5.4

8 years ago

1.3.2

8 years ago

1.3.1

8 years ago

1.2.3

8 years ago

1.2.2

8 years ago

1.2.1

8 years ago

0.1.1

8 years ago