Имеет ли смысл реплицировать серверный модуль Node.js Kubernetes несколько раз на одном и том же узле Kubernetes? - PullRequest
2 голосов
/ 27 мая 2020

У нас есть приложение, которое обрабатывает запросы, ответ на которые может занять несколько минут. Имеет ли смысл помещать это приложение в модуль и многократно реплицироваться на одном и том же узле, чтобы мы могли обрабатывать каждый запрос в новом потоке (учитывая, что nodejs однопоточный)?

1 Ответ

2 голосов
/ 27 мая 2020

Вариант использования здесь довольно неустойчивый. Согласно вашему утверждению, ваше приложение является однопоточным, и вы хотите увеличить модуль, как только будет запущен новый запрос, только если предыдущий модуль занят или имеет блокировку, проще говоря, новый модуль должен поставляться с новым

Kubernetes - это оркестратор для контейнеров и развертывание приложения monolithi c на кубернетах не только снижает все огромные возможности кубернетов, но и приносит много накладных расходов при развертывании и развертывании. вопросы автоматизации.

Кроме того, хорошая вещь, когда вы отделяете монолит (= одиночный поток) от (микро) сервис-ориентированной архитектуры, вы можете иметь изолированное событие l oop для каждой службы. Поскольку каждый процесс Node будет работать изолированно внутри контейнера!

Я бы посоветовал вам подумать о архитектурном дизайне приложения, разбить их на многопоточные и затем вернуться к кубернетам.

Однако цитируя то же самое https://www.dataversity.net/use-kubernetes-deploy-monolithic-apps/# A Linux shell - это Linux shell - это Linux shell. Вы можете заставить его работать, и следующее может быть впереди.

Strategi c Решение: Вы можете объявить HPA [Horizontal Pod Autoscaler] для своего развертывания с флагом - max-replicas = xx , то вам нужно написать задание, используя метрики запроса , чтобы всякий раз, когда есть запрос к службе, развертывание должно автоматически масштабироваться и очищаться аналогичным образом. Также вам придется уменьшить масштаб, как только запрос закончится. Вам следует использовать v2beta2 apiVersion HPA, поскольку он позволяет использовать этот тип показателей.

Также я думаю, что вам придется использовать v2beta2 apiVersion HPA потому что вам нужно будет сохранить количество запросов в унарном порядке, чтобы запросы не генерировали 5XX , поскольку служба kubernetes отправляет запрос в тот же под, если такой метри c не установлен.

...