Как взаимодействовать при микросервисной архитектуре?
я бы вообще рекомендовал бы для микросервисов протокол protobuf.
или gRPC.
они уже сами умеют правильно работать поверх протоколов более низкого уровня.
думается и для PHP уже есть готовые биндинги-библиотеки.
и наверняка в них реализована технология "пулов подключений", которая позволяет не разрывать соединение довольно долго.
как самую скоростную альтернативу можно рассмотреть и UDP. Если у вас надежная связь между сервисами и короткие сообщения - думается это будет крайне эффективно и без сложного программирования.
аналогично и веб-сокеты должны быть эффективны.
но, с пулом подключений.Учитывая язык PHP скриптовый, там весь скрипт не завершится пока запрос-ответ ходит, при большом количестве это всё дело пожрёт много памяти и будет полная шляпа... 
но это все предполагает, что ваш микросервис на PHP работает и не перезапускается довольно долго (часами, или хотя бы минутами и десятками минут). иначе все оптимизации бессмысленны
существует 2 режима запуска PHP скриптов. 
тот что используется для мелких говносайтиков - там действительно скрипт перезапускается на запрос.
и долговременная работа скрипта. один скрипт обрабатывает множество запросов без перезапуска.
если у вас не получается сделать вариант второй, который собственно и хорошо подходит для быстрой реализации, то 
рассмотрите вариант с внешними по отношению к вашим PHP-скриптам MQ-серверами, которые будут работать постоянно и не зависеть от перезапуска PHP.
какой нибудь RabbitMQ и т.п.
tcp - не знаю, есть ли реалзиации на php + бинарный протокол, например protobuf.
Тот же guzzle позволяет отправлять асинхронные запросы docs.guzzlephp.org/en/stable/quickstart.html?highl...