С какими транспортными протоколами и технологиями вы работали (брокеры сообщений, вебсокеты, вебхуки)
Что проверяют
Понимаете ли вы разницу между способом доставки и протоколом и выбирали ли инструмент под задачу, а не по привычке. В вопросе смешаны три разные вещи, и интервьюер смотрит, объясните ли вы, когда нужна каждая.
Как отвечать
Разложите по назначению.
- вебхук: чужой сервис сам делает HTTP-запрос к вашему адресу, когда произошло событие. Обязательны проверка подписи, быстрый ответ и обработка в фоне, защита от повторов по идентификатору события;
- вебсокет: постоянное двустороннее соединение поверх TCP, открывается обновлением обычного HTTP-соединения. Нужен, когда сервер сам и часто шлёт данные: чаты, котировки, совместное редактирование;
- события от сервера обычным HTTP: односторонний поток с автоматическим переподключением, дешевле вебсокета, когда обратный канал не нужен;
- брокеры: RabbitMQ с обменниками, очередями, подтверждениями и очередью недоставленных сообщений, а также Kafka как журнал с разделами, смещениями и группами потребителей, где порядок гарантирован внутри раздела.
Для Node добавьте эксплуатационную часть: при нескольких процессах вебсокетам нужна общая шина, иначе рассылку увидят не все клиенты. Нужны проверка живости соединения, ограничение размера сообщения, аккуратное завершение с отпиской потребителя.
Где спотыкаются
Называют вебсокеты и вебхуки транспортными протоколами. Транспорт это TCP, вебсокет работает поверх него после рукопожатия по HTTP, а вебхук вообще не протокол, а схема обратного вызова обычным запросом.
Второе: запускают несколько экземпляров приложения и удивляются, что рассылка доходит через раз. Соединение живёт внутри одного процесса, значит нужен общий слой обмена между процессами, а при откате на длинные опросы ещё и привязка клиента к тому же узлу.
Третье: верят в доставку ровно один раз. И брокеры, и отправители вебхуков повторяют доставку, если не получили подтверждения, поэтому обработчик обязан быть идемпотентным, а порядок сообщений в общем случае не гарантирован.