Высоконагруженный WEB сервис (Saas), как правильно организоваться очередь выполнения задач?

У нас сервис автоматизации торговли в интернете.
Сервис работает на PHP (Yii2 Rest API), NodeJS, база данных MySQL и индексация в ElasticSearch для полнотекстового поиска и фасетных фильтров.
Столкнулись с проблемой:
Организация очереди - в фоновом режиме выполняется в районе 10000 задач в секунду, идёт постоянная запись/обновление в MySQL. Бывает, что MySQL не справляется с таким потоком.
Интересуют следующие вопросы:
1. Где и как хранить очередь и на чём лучше её реализовать? (Это отправка email, обновление цен у товаров, позиций и т.д)
2. Возможно, какая-то БД подойдёт лучше, если да, то какая? (Требование для БД: постоянное обновление записей и запись. Огромное количество данных, быстрое чтение).

Железо:
Процессор: Intel Xeon E5 2650v4 8x2.20 GHz
Память: 32 GB DDR4
Диск: 100 GB SSD (RAID 10)
Порт: 1000 Mbit
  • Вопрос задан
  • 81 просмотр
Решения вопроса 1
@DEMETRA-WORK Автор вопроса
Полностью поменяли стак на:
NodeJS, RabbitMQ, Postgres, Redis и для аналитики ClickHouse.
И переписываем на микросервисную архитектуру.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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