2017-10-30 72 views
5

Z tego co wiem, kontenery Docker używają wielu wątków, a aplikacje Node.js używają tylko jednego wątku. Poprzez uruchomienie czegoś podobnego do pm2, która obsługuje grupowanie Node.js, mógłbym wykorzystać wszystkie rdzenie dostępne w kontenerze Docker.Klastry Node.js a wiele kontenerów Docker

Czy to oznacza, że ​​mogę lepiej wykorzystać każdą instancję Docker, łącząc procesy Node.js? Jeśli tak, czy nie byłoby to preferowane po prostu uruchamianiu pojedynczej instancji klasy Node.js na kontener?

Problem dotyczyłby efektów ubocznych spowodowanych zwiększeniem lub zmniejszeniem liczby procesorów w Dockerze.

Odpowiedz

0

Po pierwsze, zasadniczo nie potrzebujesz pm2 do uruchamiania klastrów węzłów. węzeł ma wbudowaną wersję clusters module, aby skorzystać z wielordzeniowej maszyny. Skalowanie instancji nie ma tak naprawdę wpływu, chyba że zatwierdzisz liczbę pracowników. Zapoznaj się z przykładowym kodem w module klastrów, aby dowiedzieć się, w jaki sposób można spawnować pracowników za pomocą klastrów.

+0

Myślę, że pytanie dotyczy klastrowania w stosunku do wielu kontenerów doków, a nie klastrowania aplikacji - pm2 był tylko przykładem :-) – stefanobaldo

0

Jeśli mówisz o klastrowaniu NodeJS wewnątrz innego elementu dokowania, nie sądzę, że da ci to dodatkowy impuls. NodeJS, jak powiedziałeś, działa w jednym wątku, więc albo pm2 (faktycznie go używam), albo okno dokowane będzie miało ten sam efekt pod względem dystrybucji obciążenia.

NodeJS ma koncepcję pracowników internetowych do obsługi sposobu obsługi przychodzących żądań, ale nawet niezbyt szybki serwer obsłuży setki żądań, ponieważ jest to architektura nieblokująca.

Rozumiem, że nadal muszę kopać w Dockerze, który chcę, ale nie mam czasu, ale chciałbym mieć 1 obraz dokowany na serwer (wirtualny lub fizyczny), a następnie poprowadzić kilka razy PM2 instancje węzła wewnątrz niego.

Powodem tego jest to, że chcę Docker obsłużyć zależności dla mnie i chcę PM2 do obsługi zarządzania klastrami, ponieważ ma fajne funkcje, takie jak restarcie automatycznie, gdy pamięć osiąga cel lub do zrestartowania błędami węzeł

+0

Co masz na myśli mówiąc: "NodeJS ma pojęcie pracowników sieci"? –

+0

Być może pracownicy WWW nie są najlepszym terminem, ale miałem na myśli maksymalne ustawienia, które można skonfigurować: http.globalAgent.maxSockets – sfratini

Powiązane problemy