У меня есть несколько микросервисов, написанных на Nodejs Koa
, работающих на Docker Swarm
.
Поскольку инструменты оркестрации контейнеров, такие как Kubernetes или Swarm, могут мгновенно масштабировать службы, у меня есть вопрос о корректном завершении работы службы Nodejs, чтобы предотвратить незавершенный запущенный процесс.
Ниже приведен поток, о котором я могу думать:
- отправка сигнала SIGNINT каждому рабочему процессу. Отправляет ли docker swarm
SIGNINT
рабочему процессу при уменьшении масштаба службы? рабочий отвечает за перехват сигнала, очистку или освобождение любого используемого ресурса и завершение его процесса. Как я могу остановить новый запрос API, дождаться завершения любого запущенного процесса перед завершением работы?
Некоторый код ниже из ссылки:
process.on('SIGINT', () => { const cleanUp = () => { // How can I clean resources like DB connections using Sequelizer } server.close(() => { cleanUp() process.exit() }) // Force close server after 5secs, `Should I do this?` setTimeout((e) => { cleanUp() process.exit(1) }, 5000) })
process.on('SIGTERM', () => {})
- person Jarede   schedule 27.10.2020