TGViewer
Baba Нюра's Wisdom Baba Нюра's Wisdom @babanyurawisdom · 225 subscribers
Post #793 131
ВВОДНАЯ В MESSAGE QUEUE

Давайте снова вспомним нашу пиццерию и заказы через приложение.

В каких ситуациях обычного синхронного запроса уже недостаточно?

1️⃣У нас есть пиковая нагрузка

Мы находимся в офисном квартале. Каждую пятницу около 17:00 соседние компании начинают массово заказывать еду сотрудникам. В результате в течение часа приходит в 50 раз больше заказов, чем обычно.

Что делать? Держать несколько серверов только ради этого пика? Но ведь в остальное время хватает и одного.

2️⃣Нельзя потерять заказ

Представьте, что клиент увидел в приложении сообщение: «Ваш заказ принят». Но в этот момент сервис кухни перезагрузился, потому что уборщица тетя Галя случайно задела шваброй провод. В итоге информация до кухни не дошла, а клиент уверен, что пиццу уже готовят.

Такой сценарий недопустим.

3️⃣Один заказ — это не одна операция

На самом деле после нажатия кнопки «Заказать» начинается целая цепочка действий:
⬛проверить наличие ингредиентов;
⬛рассчитать время доставки;
⬛оценить загрузку кухни;
⬛подобрать курьера;
⬛списать оплату;
⬛и многое другое.
Причем некоторые операции намного тяжелее остальных. Например, расчет времени доставки может использовать сложные алгоритмы построения маршрутов и работать в несколько раз дольше проверки ингредиентов. Возможно, ему вообще понадобится отдельное железо или GPU.

Было бы здорово выполнять такие задачи независимо друг от друга.

4️⃣Клиенту не нужен мгновенный ответ

На самом деле пользователю совсем не обязательно сразу получать окончательный результат. Достаточно увидеть сообщение: «Ваш заказ обрабатывается». А уже через несколько секунд приложение может прислать: «Заказ принят. Курьер будет через 28 минут.» или «К сожалению, кухня сейчас перегружена. Попробуйте оформить заказ позже.»

Если вы узнали подобные признаки в своей системе, скорее всего, синхронная архитектура уже начинает мешать.

Именно здесь появляется Message Queue.

Что меняется?

1️⃣Запрос от клиента становится очень легким. Сервис не пытается выполнить всю работу сразу. Он просто кладет сообщение в очередь и отвечает клиенту: «Заказ принят в обработку.» На этом соединение можно закрыть.

2️⃣Пиковые нагрузки становятся не страшны. Consumer разбирает сообщения в своем темпе. Да, в часы пик ответ может прийти немного позже, зато вам не нужно постоянно держать огромный парк серверов.

3️⃣Сообщения не теряются. Если сообщение попало в очередь, оно будет ждать обработки. Например, пока повар не нажмет в приложении кнопку: «Берем заказ №123 в работу.» Только после этого сообщение считается успешно обработанным.

4️⃣Микросервисы начинают работать независимо. Каждый сервис может читать свою очередь и выполнять только свою часть работы. Проверка ингредиентов, расчет доставки, поиск курьера — все это происходит параллельно. И если сервис расчета доставки внезапно перезапустился, остальным сервисам не придется выполнять свою работу заново.

Это была вводная история о Message Queue и ответ на вопрос, зачем вообще могут быть нужны очереди сообщений.

Если было полезно — ставьте 🔥

#бабанюра_программирует
  • 🔥 5
  • ❤ 2
More from @babanyurawisdom
  1. Sep 28, 2026ВЕДИ СЕБЯ КВАЗИСЛУЧАЙНО. ЧАСТЬ I Если вас попросят загадать случайное число, то ваш мозг л…
  2. Sep 25, 2026ПОДАРОК СО СМЫСЛОМ Снова в том возрасте, когда уместно дарить родителям подарки, сделанные…
  3. Sep 23, 2026САПОЖНИК БЕЗ САПОГ Не так давно на работе закончилось очередное ревью. Можно поздравить с…
  4. Sep 22, 2026КЮРАСАО Вторая страна для изучения после ЧМ-2026 — Кюрасао. Я по себя называю её исключите…
  5. Sep 21, 2026Post #832
  6. Sep 18, 2026ГРАФ МОНТЕ-КРИСТО. СЕРИАЛ Мы с Александром Юрьевичем почти никогда не смотрим сериалы. Зна…
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 →