자식 프로세스가 하나만 실행되면 exit 이벤트가 발생하고, 새로운 자식 프로세스를 실행할 때까지 순간적으로 서비스가 중단될 수 있습니다. 이것은 자식 프로세스를 여러 개 실행해 방지할 수 있습니다. 하지만 너무 많은 자식 프로세스는 불필요한 리소스 낭비를 발생하므로 서비스에 적당한 수를 지정하는 것이 중요합니다. 구매 관리 마이크로서비스와 회원 관리 마이크로서비스에도 동일하게 cluster 모듈을 적용합니다.
코드 10-3 회원 관리 마이크로서비스에 cluster 모듈 적용
예제 파일 : microservice_members.js
'use strict'; const business = require('../chapter5/monolithic_members.js'); const cluster = require('cluster'); class members extends require('./server.js') { constructor() { super("members" , process.argv[2] ? Number(process.argv[2]) : 9020 , ["POST/members", "GET/members", "DELETE/members"]); 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 members(); }