Для потока ответа сервера часто достаточно SSE или HTTP-streaming, а WebSocket нужен при постоянном двустороннем обмене. Генерацию лучше отделить от клиентского соединения.
Как спроектировать и масштабировать сервис чата с LLM: выбрать между SSE и WebSocket для связи клиента с сервером, организовать потоковую передачу ответов модели и обработку запросов?
Для потока ответа сервера часто достаточно SSE или HTTP-streaming, а WebSocket нужен при постоянном двустороннем обмене. Генерацию лучше отделить от клиентского соединения.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Для потока ответа сервера часто достаточно SSE или HTTP-streaming, а WebSocket нужен при постоянном двустороннем обмене. Генерацию лучше отделить от клиентского соединения.
Создавайте операцию с id и состоянием, проверяйте доступ, квоты и идемпотентность до запуска. Backend хранит ключи провайдера, передаёт части ответа, учитывает отмену, backpressure и таймауты. При reconnect нужен согласованный replay или snapshot, чтобы не начать платную генерацию заново. Масштабируйте соединения и вычислительные задания отдельно, ограничивая параллелизм и стоимость; не держите DB-транзакцию во время ожидания модели.