metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2016-08-03 03:33 pm

"Асинхронный" http api

Вчера был на тусовке junolab, где их главные гуру рассказывали, как у них бекенд устроен.
В частности, на входе у них стоят гейтвеи с обычным http протоколом и минимальным набором фич - валидация, проверка авторизации по токенам и прочее такое, которые перекидывают запрос в MQ (nats.io).

При этом, насколько я понял, асинхронность там реализована поверх обычного http, без всяких http2, веб-сокетов и прочих не везде работающих протоколов - т.е. клиент api сначала делает запрос к гейтвею, ему сразу говорят - 200 ок, а потом он должен, по идее, дальше опрашивать гейтвей, пока для него из MQ придет ответ от микросервисов. Или у них там ответы от сервера бесконечно идут, я сходу не понял (т.е. ответ без content-length и соединение просто ждет пока придет что-нибудь, не помню, как эта техника называется).

В принципе, если keep-alive и соединение не обрывается - то реализация дуплексного протокола поверх синхронного http вроде приемлемая. Единственное, что в случае бесконечного ответа - если сервер и клиент долго ничего друг другу не говорят - промежуточные NAT и прочая сетевая муть могут соединение забыть, причем пока TCP keep-alive не проснется (а это два часа по умолчанию, вроде) - это обнаружено той стороной, которая молчит и ждет, не будет. Но теоретически это какие-то heart-beat слать можно со стороны сервера и запросы со стороны клиента.

[identity profile] vp.livejournal.com 2016-08-03 06:41 pm (UTC)(link)
Меня больше интересует, есть ли сегодня какие-то реальные препятствия для работы веб-сокетов, с учетом, что сервер у нас всегда сервер, а клиенты у нас мобильные. Т.е. не строят ли операторы какие-то козни по противодействию этому.
Потому что все-таки это лучше делать веб-сокетами.

[identity profile] metaclass.livejournal.com 2016-08-03 07:46 pm (UTC)(link)
Да не факт что всякие говно-прокси прозрачные и прочее такое их умеют.
И что-то мне говорили, что heart-beats в этих веб-сокетах тоже под вопросом, а без них - всякие блядские наты имеют свойство про коннект забывать.

И еще веб-сокеты непонятно кто из фреймворков умеет. Например, у нас http.sys и то что поверх него сделано - не умеет.

[identity profile] chemodax.livejournal.com 2016-08-06 06:28 pm (UTC)(link)
В интернетах пишут что поддержка вебсокетов появилась в IIS 8.0 (Win8/WS2012):
https://www.iis.net/learn/get-started/whats-new-in-iis-8/iis-80-websocket-protocol-support

Но в API http.sys при этом никаких изменений нет, что странно.

[identity profile] berezovsky.livejournal.com 2016-08-06 06:31 pm (UTC)(link)
пару тредиков взад у топикстартеров было про реальный сектор и двухтыщетретью простигосподи винду :-)

[identity profile] chemodax.livejournal.com 2016-08-06 06:37 pm (UTC)(link)
Лично я этого конечно не могу понять, но знаю что достаточно много людей так живут.