Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 25.08.2020 19:16:48

Несколько инстансов одного приложения с разными маршрутами - возможно?

Здравствуйте! Пишу некое API с кучей контроллеров, в каждом их которых десятки методов, и всё это варится в одном api.php.
Недавно стал замечать, что некоторые тяжелые методы тормозят работу остальных (например, есть метод опроса некоей PON-железки, занимает минуты 4 времени, и пока оно работает, другие, более простые запросы типа обращения к БД, стоят в очереди и курят).
Вижу пока два варианта решения:
1. Наплодить приложений. Плюсы: у каждой приложухи свои маршруты. Минусы: общий код (типа логгирования, обработки ошибок, дефайны общих констант) надо как-то поддерживать, что не гут; одинаковые ядра приложений и зависимости композера, что занимает место и память.
2. Запускать несколько инстансов одной и той же приложухи на разных портах. Минусы: одинаковые наборы маршрутов у каждого инстанса. Плюсы: экономия места и разработка в одном проекте.

Может, есть какая-то магия с запуском нескольких инстансов одной приложухи с разными настройками, в том числе, и маршрутами?

Laravel 5.8, многого не знаю, будьте снисходительны! smile

Не в сети

#2 26.08.2020 09:27:49

Re: Несколько инстансов одного приложения с разными маршрутами - возможно?

Я не думаю что буквально несколько инстансов (на одном физ. сервере) могут ускорить дело. Начните с настроек веб-сервера, чтобы он принимал больше запросов, дайте ему больше оперативки. Это самый простой и действенный способ.

Несколько инстансов со своими собственными ресурсами — да могут помочь, если система адаптирована к такому масштабированию. Ставите балансер (прокси) который будет создавать видимость работы с одним инстансом, а на самом деле будет раскидывать веб-запросы по разным. Можно, настроить репликацию базы master-slave и указать отдельное соединение с read-only репликой для некоторых моделей или репозиториев. У разных вебсерверов будут разные адреса реплик БД. Подумайте какие ресурсы могут блокироваться на вводе-выводе. Переложите на CDN нагрузку по раздаче статики.


There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.

Не в сети

#3 26.08.2020 12:49:16

Re: Несколько инстансов одного приложения с разными маршрутами - возможно?

дело не в ускорении, а в распределении очередей запросов. В итоге применил вариант 2, поверх прикрутил HAProxy, который фильтрует маршруты и балансит запросы по инстансам. Ответ увидел чуть позже, но всё равно спасибо smile

Не в сети

Подвал раздела