2016-12-21 2 views
1

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

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

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

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

Можно ли:

  1. кэше подключения к услуге между запросами?
  2. вызовите методы RPC асинхронно?

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

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

Любые предложения?

+0

да, один подход, чтобы пользователи _feel_ она загружается быстрее, фактически ускоряя ничего. Просто разделите нагрузку. Загрузите _something_ быстро, а затем заполните его контентом. –

+0

Сайт раздувается с некоторыми сторонними усиливающими решениями. Длинный способ заставить его работать быстро. Теоретически, детали загружаются быстро, на практике я, как пользователь, чувствую, что это медленно. –

+0

Вы можете настроить Varnish как слой кэширования и восстановления после отказа между хранилищем и дополнительными API. В качестве дополнительного бонуса вы можете использовать Larnish для загрузки запросов API баланса и действовать как менеджер трафика/маршрутизатор. В целом (и немного не по теме, извините): - Для магазина на базе PHP почти ничего не можно сделать на уровне PHP, за исключением (очевидно) использования opcache, удаления ненужных модулей .so, минимум и использовать последнюю версию. - В моем опыте с Magento, например, легкая победа в производительности была достигнута FPC с отверстиями +, doh, тонкой настройкой MySQL. – doharlem

ответ

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, которые мы можем рассматривать в будущем

+0

Спасибо. Я знал об этом, мне было интересно, если кто-нибудь найдет некоторые обходные пути. –

Смежные вопросы