Кластеризация в Node.js и автоматическое масштабирование веб-приложения с использованием Kubernetes служит той же цели?

#node.js #kubernetes #autoscaling

#node.js #kubernetes #автоматическое масштабирование

Вопрос:

Node.js внедрил кластерный модуль для масштабирования приложений с целью оптимизации производительности. У нас есть Kubernetes, делающий то же самое.

Я в замешательстве, если оба служат одной и той же цели? Мое предположение заключается в том, что кластеризация может порождать максимум 8 процессов (при наличии 4 ядер процессора с 2 потоками в каждом), и в Kubernetes такого ограничения нет.

Ответ №1:

Kubernetes и Node.js Кластерный модуль работает на разных уровнях.

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

Node.js Кластерный модуль ведет себя как балансировщик нагрузки, который разветвляется N раз и распределяет запросы между различными процессами, которыми он владеет, и все это в пределах, определенных его средой (CPU, RAM, сеть и т.д.).

На практике Kubernetes имеет возможность создавать дополнительные Node.js контейнеры (масштабирование по горизонтали). С другой стороны, Node.js может расти только в пределах своей среды (масштабирование по вертикали). Вы можете прочитать об этом здесь .

Хотя с точки зрения производительности оба подхода могут быть относительно схожими (в обоих случаях вы можете использовать одинаковое количество ядер); проблема с вертикальным масштабированием на одной машине заключается в том, что вы теряете аспект высокой доступности, который предоставляет Kubernetes. С другой стороны, если вы решите развернуть несколько Node.js контейнеры на разных машинах, вы гораздо более терпимы к тому дню, когда одна из них выходит из строя.