Мне интересно, как бы я правильно использовал MySQL, когда масштабирую свое приложение Node.JS, используя модуль cluster
.В настоящее время у меня есть только два решения:
Решение 1 :
Создание подключения к базе данных на каждом "работнике".
Решение 2 :
Имейте соединение с базой данных на главном процессе, и всякий раз, когда один из рабочих запрашивает некоторые данные, мастер-процесс возвращает данные.Однако, используя это решение, я не знаю, как я смогу заставить работника извлекать данные из основного процесса.
Я (думаю) сделал «хакерский» обходной путь, генерируя уникальный номер и затем ожидая, пока мастер-процесс отправит сообщение обратно работнику, а имя события будет уникальным номером.
Если вы не понимаете, что я имею в виду под этим, вот код:
// Worker process
return new Promise (function (resolve, reject) {
process.send({
// Other data here
identifier: <unique number>
})
// having a custom event emitter on the worker
worker.once(<unique number>, function (data) {
// data being the data for the request with the unique number
// resolving the promise with returned data
resolve(data)
})
})
//////////////////////////
// Master process
// Custom event emitter on the master process
master.on(<eventName>, function (data) {
// logic
// Sending data back to worker
master.send(<other args>, data.identifier)
}
Каков наилучший подход к этой проблеме?
Спасибо зачтение.