코드 10-4 구매 관리 마이크로서비스에 cluster 모듈 적용

    예제 파일 : microservice_purchases.js

    'use strict';
    
    const business = require('../chapter5/monolithic_purchases.js');
    const cluster = require('cluster');
    
    class purchases extends require('./server.js') {
        constructor() {
            super("purchases"
                , process.argv[2] ? Number(process.argv[2]) : 9030
                , ["POST/purchases", "GET/purchases"]);
    
            this.connectToDistributor("127.0.0.1", 9000, (data) => {
                console.log("Distributor Notification", data);
            });
        }
    
        onRead(socket, data) {
            console.log("onRead", socket.remoteAddress, socket.remotePort, data);
            business.onRequest(socket, data.method, data.uri, data.params, (s, packet) => {
                socket.write(JSON.stringify(packet) + '¶');
            });
        }
    }
    
    if (cluster.isMaster) {
        cluster.fork();
        cluster.on('exit', (worker, code, signal) => {
            console.log(`worker ${worker.process.pid} died`);
            cluster.fork();
        });
    } else {
        new purchases();
    }

    이 장에서는 cluster 모듈을 이용해 마이크로서비스를 부모 프로세스와 자식 프로세스로 분리한 후 고가용성을 보장하는 방법을 알아보았습니다.

    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.