Это теоретический вопрос, просьба не сообщать о спаме.
Я работаю над веб-приложением обмена криптовалюты P2P. Есть возможность поменять одну криптовалюту на другую. Допустим, у меня есть BT C, и мне нужно преобразовать его в эквивалентную сумму ETH.
Как только пользователь заходит на страницу обмена, мой код получает курсы обмена с 7 сторонних бирж, как показано на изображении ниже.
То, что я здесь делаю в фоновом режиме, - это я использую эти 7 обменов, используя guzzle в заданиях в очереди, и как только я получаю данные с любого обмена он транслируется слушателям событий и каналам.
Он отлично работает, когда я и моя команда из 5-6 человек тестируем эту функциональность. Я очень быстро вижу, что задания обрабатываются на панели инструментов laravel horizon.
Затем я разместил свое приложение на реальном сервере с доменным именем, я попробовал blazemeter, инструмент для тестирования производительности. Где я бы дал URL-адрес API этой страницы (я использую vuejs) и выделил бы 50 пользователей для выполнения запроса к этому API. Здесь я узнал, что около 40 тыс. Заданий помещены в очередь на панели мониторинга горизонта, и ее производительность резко упала, и время до sh этих заданий отображалось как 4 часа. Обычный пользователь не может ждать ответа.
Итак, мой вопрос заключается в том, как лучше всего решить эту проблему в производственной среде. Как установить приоритет заданий в очереди.
Я использую redis и драйвер очереди.