Как взаимодействовать при микросервисной архитектуре?

Вопрос как свести потери скорости к минимуму, если в проекте много микросервисов? По каким протоколам вообще они могут взаимодействовать?
Для примера взять PHP, там вебсокеты, потом CURL-обёртка на вебсокетами, ну guzzle и т.п. мы не берём - это уже библиотеки. Так вот если обращаться по curl http протоколу то там выходит 130-200 запросов в минуту в зависимости от скорости ответа сервера который мы запрашиваем, но даже если он отвечает быстро там есть всё равно накладные расходы на установку соединения и т.п. штуки.
Как можно увеличить количество запросов в десятки и сотни раз? Другой протокол, более низкоуровневое общение?
Учитывая язык PHP скриптовый, там весь скрипт не завершится пока запрос-ответ ходит, при большом количестве это всё дело пожрёт много памяти и будет полная шляпа...
  • Вопрос задан
  • 1283 просмотра
Решения вопроса 2
@laxikodeje
я бы вообще рекомендовал бы для микросервисов протокол protobuf.
или gRPC.
они уже сами умеют правильно работать поверх протоколов более низкого уровня.
думается и для PHP уже есть готовые биндинги-библиотеки.

и наверняка в них реализована технология "пулов подключений", которая позволяет не разрывать соединение довольно долго.

как самую скоростную альтернативу можно рассмотреть и UDP. Если у вас надежная связь между сервисами и короткие сообщения - думается это будет крайне эффективно и без сложного программирования.

аналогично и веб-сокеты должны быть эффективны.
но, с пулом подключений.

Учитывая язык PHP скриптовый, там весь скрипт не завершится пока запрос-ответ ходит, при большом количестве это всё дело пожрёт много памяти и будет полная шляпа...


но это все предполагает, что ваш микросервис на PHP работает и не перезапускается довольно долго (часами, или хотя бы минутами и десятками минут). иначе все оптимизации бессмысленны

существует 2 режима запуска PHP скриптов.
тот что используется для мелких говносайтиков - там действительно скрипт перезапускается на запрос.
и долговременная работа скрипта. один скрипт обрабатывает множество запросов без перезапуска.

если у вас не получается сделать вариант второй, который собственно и хорошо подходит для быстрой реализации, то

рассмотрите вариант с внешними по отношению к вашим PHP-скриптам MQ-серверами, которые будут работать постоянно и не зависеть от перезапуска PHP.

какой нибудь RabbitMQ и т.п.
Ответ написан
Комментировать
@RidgeA
tcp - не знаю, есть ли реалзиации на php + бинарный протокол, например protobuf.

Тот же guzzle позволяет отправлять асинхронные запросы docs.guzzlephp.org/en/stable/quickstart.html?highl...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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