TGViewer
GetAnalyst - Навыки • Системный анализ • Бизнес-анализ GetAnalyst - Навыки • Системный анализ • Бизнес-анализ @getanalysts · 22.5K subscribers
Post #3469 3.19K
⚡ Синхрон, асинхрон, стриминг — в чём разница и когда что выбирать? ⚡

Про эти виды обмена данными постоянно спрашивают СА и БА на собеседованиях.


Разбираю на примерах #MedAssistGA.

📌 Синхронный обмен
Отправили запрос — ждём ответа, только потом идём дальше.

Когда нужен:
результат нужен прямо сейчас, чтобы продолжить сценарий.

Примеры:
▫️ GET /doctors — запросили список врачей, ждём, показываем пользователю
▫️ GET /schedule — запросили слоты, ждём, показываем пользователю расписание
▫️ POST /appointments — создали запись, ждём подтверждения от сервиса, показываем пользователю

Здесь нельзя идти дальше без ответа.
Синхрон — единственный вариант.


📌 Асинхронный обмен
Отправили сообщение — не ждём ответа, продолжаем работу.
Результат получим позже.

Когда нужен:
результат не нужен мгновенно,
запрос "тяжелый" (занимает много времени) и важна надёжность обработки.

Пример из #MedAssistGA:
1. Врач запрашивает сводный отчёт по приёмам за месяц POST /reports/appointments
2. Система принимает запрос, кладёт задачу в очередь к обработке (RabbitMQ/Kafka) и сразу возвращает HTTP-201 со статусом "отчет формируется" и id будущего отчета.
3. Врач продолжает работу в системе.
4. Когда отчёт готов, Сервис Уведомлений присылает push или email со ссылкой на скачивание.

Суть: мы не "крутим кружок" и не держим соединение открытым, пока система собирает данные. Пользователь может делать что угодно. А по готовности просто зайти и скачать итоговый результат.


📌 Стриминг (SSE и WebSocket — API реального времени)

Данные передаются не одним ответом, а потоком.
Соединение остаётся открытым на время передачи ответа.

SSE (Server-Sent Events) — однонаправленный поток сервер → клиент. Работает поверх обычного HTTP.

Пример из #MedAssistGA:
1. Пользователь задал вопрос в чате
2. AI Chat Service направил его в Groq
3. Groq генерирует ответ токен за токеном (слово за словом) и возвращает по SSE
4. AI Chat Service получает поток и передаёт его дальше во фронт, тоже через SSE
5. Пользователь видит текст по мере появления, не ждёт полного ответа.


📌 WebSocket — двусторонний канал, обе стороны инициируют сообщения.
В #MedAssistGA его нет — но если добавим онлайн-чат врач–пациент, появится WebSocket.
Пользователь сможет писать сообщения в чат и сразу получать новые сообщения от сервера без обновления страницы. Соединение между Frontend и Backend будет оставаться открытым, поэтому сервер сможет доставлять новые сообщения на экран в реальном времени.



👉 Как выбирать
▫️ Результат нужен сейчас → синхронный REST
▫️ Задача долгая или результат не нужен мгновенно → асинхронный (Kafka, RabbitMQ)
▫️ Сервер передаёт данные клиенту потоком → SSE
▫️ Обе стороны обмениваются в реальном времени → WebSocket


#ИнтеграцииGA

📱 Tg | 💙 ВК | 💬 Max
  • 👍 15
  • ❤‍🔥 8
  • ❤ 4
  • 🔥 3
More from @getanalysts
  1. Sep 30, 2026🐞 HTTP-ошибки в интеграциях с внешними системами: как их обрабатывать 🐞 Что делать, если…
  2. Sep 29, 2026🔖 5 архитектурных стилей API, которые важно знать аналитику 📡 API определяет, как именно…
  3. Sep 28, 2026💥 Интеграции систем — 7 октября. Сегодня последний день специальных условий записи 💥 Где…
  4. Sep 28, 2026⌛️ Webhook, SSE, WebSocket, polling или worker: что выбрать для долгой операции? ⌛️ Возьмё…
  5. Sep 27, 2026Уже завтра на самолёт в Сан-Франциско, чтобы пообщаться с коллегами из OpenAI, Anthropic и…
  6. Sep 25, 2026🔥❤️‍🔥🎉 Вау-вау-вау! Вот это мы отметили! 4 часа практики, море вопросов, десятки схем и…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →