Как позвонить в микросервис, не замедляя ответ?

Я хочу интегрировать новую функциональность с решением для электронной коммерции на основе Laravel. На этом этапе запуск основных сценариев занимает около 2,7 с. Весь сайт загружается выше 6 с, и мы только начали его отслеживать. Цель состоит в том, чтобы получить ниже 2 с со сценарием и 4 с со всем.

Микросервис и функциональность предоставляются через gRPC.

Существует клиент-серверная аутентификация на основе TLS (экземпляры электронной коммерции и мой сервис могут доказать, кто они). Это ест несколько миллисекунд.

При тестировании Go-client и Go-server, с пулом 20 соединений, он достиг ниже 35 мс на запросы.
В PHP каждый запрос занимает более 200 мс.

Это возможно:

  1. кешировать соединение с сервисом между запросами?
  2. вызывать методы RPC асинхронно?

Среди других решений я рассматриваю:

  1. Настройка локального прокси-сервера gRPC, который будет принимать только запросы Ghost localhost, сделанные PHP-скриптом, и делать их безопасными вызовами gRPC.
  2. Настройка прокси перед PHP-приложением для вызова микросервиса.
  3. Вызов службы напрямую с веб-сайта с помощью JavaScript (обременяет браузер пользователя, необходимо поддерживать JavaScript).

Какие-либо предложения?

1

Решение

  • Соединение следует использовать повторно, если вы используете тот же клиент. С другой стороны, существует возможность предварительно создать объект Grpc \ Channel, а затем передать его клиенту службы в качестве необязательного третьего параметра: https://github.com/grpc/grpc/blob/master/src/php/lib/Grpc/BaseStub.php#L58. Таким образом, вы сможете повторно использовать одно и то же соединение между службами.

  • В настоящее время мы не предоставляем асинхронный API для PHP. У нас была проблема с отслеживанием https://github.com/grpc/grpc/issues/6654 что мы можем рассмотреть в будущем

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]