Какие есть подходы к построению микросервисов на PHP?
Добрый день!
Я знаком с единственным способом приготовить микросервисы на PHP без асинхронщины (Swoole, Swoft и вот это всё) — это message queue. И схема там примерно такая — у нас есть сервис сообщений (Kafka, RabbitMq, etc.) и на него подписаны воркеры микросервисов, которые ловят события.
Такой подход решает проблему PHP — отсутствие корутин и асинхронной обработки — в кейсе последовательного вызова микросервисов друг другом, т.е. поток выполнения не ждет http response, а бросает событие в очередь и ок.
Подход применим на операции записи и имеет прямой профит, когда на одно событие должен прореагировать больше чем 1 микросервис. А операции чтения проходят через API Gateway прямым пробросом запроса до нужного микросервиса.
И соответственно, вопрос, как строить микросервисы с gRPC?
Вопросы, детально:
1. Это же http вызовы, правильно понимаю? Т.е. по факту схема остается прежней — рядом с контейнером PHP приложения должен крутиться nginx, который дёргает php-fpm?
2. Не могу понять как оно в таком случае дружит с неасинхронным поведением PHP? Или не дружит?
3. В чем профит?) Ну кроме архитектурных плюшек, когда сервисы теоретически можно проектировать как бандлы — высовывая наружу высокоуровневый интерфейс и вызывая его через gRPC.
galliard, вам 100 страниц BRD на почту скинуть?
Уважаемый galliard, не важно чего я хочу добиться, вряд ли вы мне в этом поможете, а в чем помочь можете так это в определении места gRPC в архитектуре PHP-микросервисов.
Собственно, если сужать вопрос, то он только в use cases для gRPC + PHP-микросервисы.
Спасибо.