@kirill-93

Сильно ли передача по http медленнее, чем напрямую?

Сайт состоит из трех частей:
api.mysite.com - rest АПИ на php. Работает с базой, принимает и отдает данные.
ws.mysite.com - приложение на node с вебсокетами для риалтайма.
mysite.com - SPA приложение на vuejs, которое взаимодействует с двумя вышеописанными сервисами.
Вопрос в следующем: сервис с вебсокетами тоже пишет данные в базу и тут два варианта:
1) Настроить коннект к базе в nodejs и писать напрямую.
2) Обращаться к api через http.
Второй вариант удобнее, веб сокеты занимаются только обработкой событий, а с базой работает только api.
В этом случае сервис с сокетами выглядит так:
socket.on('message', message => {
    https.get('https://api.mysite...');
    
    socket.emit('...');
});

Полагаю, что установка дополнительного http соединения - это дополнительное время. Критично ли это или можно забить и делать как удобнее?
  • Вопрос задан
  • 134 просмотра
Пригласить эксперта
Ответы на вопрос 3
l3ftoverz
@l3ftoverz
Люблю Финский металкор
Полагаю, что установка дополнительного http соединения - это дополнительное время.

А установка дополнительного MYSQL соединения не тратит времени \ ресурсов?

В современном мире, подобные оптимизации, кажутся странными. (по-крайней мере мне).
Это больше вопрос архитектуры, обращаться из Node к API, как мне кажется - вернее, API это ведь некий набор соглашений о том, как должны общаться между собой сервисы. Т.е. некий интерфейс.

Но зависит в целом от контекста конечно, его полностью не видно.
Ответ написан
@rPman
Если вам нужна скорость, то уходите от постоянного переподключения к сервисам.

Конечно, современные веб-сервера и браузер умеют переиспользовать подключение для http rest, но это стоит перепроверить в вашем случае. Если идут постоянные переподключения то высокие пинги могут превратить работу вашего сервиса в лагучую дрянь (один https добавит пару туда-сюда отправлений).

websocket изначально по определению однократно открывает подключение а затем использование открытого канала возможно в обе стороны (с http rest только в одну и с оговорками в сторону клиента, читай не эффективно).

А еще вопрос, как у вас организован код обработки http rest. Если это старый классический подход, когда на каждый запрос запускается php скрипт это это еще и высоченная нагрузка на сервер, переделывайте (а точнее убирайте эту фигню и оставьте websocket), так как разница подходов дает ускорение на пару тройку порядков (это не шутка и не преувеличение).

у http rest только одно достоинство - почти бесплатная горизонтальная масштабируемость на сервере.
Ответ написан
@grinat
На практике сокеты годятся только чтобы слушать входящие сообщения. Если в обе стороны, то куча геммора, плюс сокет.ио честно говоря то еще дерьмо. В связке с пыхой, я бы лучше взял https://github.com/centrifugal/centrifugo оно разворачивается в отдельном докер контейнере и с коробки все есть.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы