3.0.0-alpha.0 • Published 8 years ago

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

Weekly downloads
2
License
Apache-2.0
Repository
github
Last release
8 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

8 years ago

2.3.0-alpha.0

9 years ago

2.2.0-alpha.0

9 years ago

2.1.0-alpha.0

9 years ago

2.0.0-alpha.0

9 years ago

1.7.0

9 years ago

1.6.0

9 years ago

1.5.6

9 years ago

1.5.5

10 years ago

1.5.4

10 years ago

1.3.2

10 years ago

1.3.1

10 years ago

1.2.3

10 years ago

1.2.2

10 years ago

1.2.1

10 years ago

0.1.1

10 years ago