코드 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 모듈을 이용해 마이크로서비스를 부모 프로세스와 자식 프로세스로 분리한 후 고가용성을 보장하는 방법을 알아보았습니다.