Задать вопрос
@Sergo94Min
Разработчик

Как создать мультипоток через docker?

Вот такой пример. На сервере есть php и nodejs
PHP отправляет команду для ноды типа
node mydir/script.js https://example.com
На ноде стоит Puppeteer (это веб драйвер браузер типа) Его нормально нельзя в одной ноде несколько раз запустить одновременно.

И нода возвращает данные в PHP
Все хорошо работает НО!

PHP может отправлять хоть 100 ссылок для ноды в секунду. А нода обрабатывает 1 ссылку в секунду(

Вот я и подумал как сделать несколько потоков. Может на сервере создать штук 20 докеров с нодой
Но как я не пойму это сделать с докером.
Проскочила мысль, сделать 20 докеров на 20-ти разных портах

И потом по 20 штук из PHP отправлять. Может есть уже обкатанные методы?
  • Вопрос задан
  • 173 просмотра
Подписаться 1 Средний 2 комментария
Пригласить эксперта
Ответы на вопрос 1
Если вы лимитированы голым докером в качестве рантайма, то можно попробовать использовать например scale в docker-compose, указав диапазон портов
services:
  web:
    image: "puppeteer" 
    ports:
       - "8081-8099:8080"
    scale: 10


Если задачу решать корректно, то нужно использовать очереди в Redis/Rabiit/NATS/прочие MQ.
Скрипт на PHP должен пихать задания в очередь, а 10 контейнеров с нодой забирать задачи из очереди, обрабатывать и возвращать результат в очередь с результатами (если результат небольшой). Так можно гарантировать что все сервисы будут заняты равномерно при нагрузке и не захлебнутся.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы