October 20, 2025

Брокер сообщений, логи

📩 Что такое брокер сообщений и для чего он нужен?

Брокер сообщений — это компонент архитектуры, который выступает посредником между различными частями системы. Он помогает системам обмениваться данными, снимая нагрузку с веб-сервисов, так как им не нужно напрямую пересылать сообщения друг другу.

В брокере сообщений есть две ключевые роли:

  • Producer (издатель) 📝 — создаёт и отправляет сообщения.
  • Consumer (потребитель/подписчик) 📥 — получает и обрабатывает сообщения.

Сообщения могут передаваться двумя способами:

  1. Прямо от отправителя к получателю — каждое сообщение используется только один раз.
  2. Схема публикации/подписки (Pub/Sub) 🔄 — продюсер публикует сообщение в топик, а все подписчики получают его. Так можно строить распределение задач между подписчиками, где каждый получает только свои сообщения.

⚡ Преимущества брокеров сообщений перед API:

  • Асинхронная передача данных, не блокирующая работу системы.
  • Повышение производительности за счёт разгрузки сервисов.
  • Надёжная доставка с повторной отправкой и маршрутизацией сообщений.

❌ Недостатки:

  • Усложнение архитектуры.
  • Возможные проблемы с консистентностью данных.
  • Отладка распределённой системы сложнее.

🛠 Когда полезны:

  • Долгие и ресурсоёмкие задачи.
  • Микросервисы для координации сервисов через топики.
  • Мобильные приложения с push-уведомлениями.
  • Транзакционные системы с последовательными этапами обработки.

🏭 Apache Kafka: продюсеры, брокеры, консумеры

Как устроен Kafka

  • Producer 📝 — приложение, отправляющее сообщения в кластер Kafka.
  • Broker 💻 — сервер, который хранит данные и распределяет их между консумерами.
  • Consumer 📥 — приложение, читающее сообщения из Kafka.

Kafka работает через логи 📜 — упорядоченные по времени записи событий. Каждое событие добавляется в конец лога и остаётся неизменным.

Топики, партиции и сегменты

  • Топик 🗂 — логическая группа сообщений (например, статусы заказов).
  • Партиции 🔹 — деление топика на части для масштабирования. Каждая партиция — строго упорядоченный лог.
  • Сегменты 📄 — файлы на диске, в которых хранятся сообщения партиций.

Каждое сообщение имеет offset — порядковый номер. Партиции могут реплицироваться для отказоустойчивости.

Продюсеры и партицирование

Продюсер сам выбирает, в какую партицию писать сообщение:

  • По ключу (hash-based) 🔑 — гарантирует порядок сообщений для одного ключа.
  • Round-robin 🔄 — равномерное распределение сообщений без гарантии порядка.

Семантики доставки сообщений

  • At-most-once ❌ — можно потерять сообщения, но дубликатов нет.
  • At-least-once ✅ — сообщения не теряются, но возможны дубликаты.
  • Exactly-once 🎯 — каждое сообщение доставлено ровно один раз.

Консумеры и консумер-группы

  • Consumer 📥 — читает сообщения из партиций.
  • Consumer group 👥 — несколько консумеров читают партиции кооперативно.
  • Heartbeat и session timeout ⏱ — проверка живости консумеров.
  • Ребалансировка 🔄 — перераспределение партиций при добавлении/удалении консумеров.

📝 Логи: что это и зачем смотреть

Что такое логи

Логи — это записи событий и сообщений системы. Они помогают понять, что происходит внутри приложения.

Когда смотреть логи

  • Тестирование новой функциональности 🧪
  • Регрессионное тестирование 🔄
  • Проверка взаимодействия с внешними системами 🌐
  • Отладка ошибок 🐞
  • Оценка производительности ⚡

Уровни логирования

  • FATAL 💀 — критическая ошибка, ведущая к завершению программы.
  • ERROR ❌ — ошибка, требующая вмешательства.
  • WARN ⚠️ — предупреждение о потенциальной проблеме.
  • INFO ℹ️ — информация о ходе работы.
  • DEBUG 🐛 — подробные данные для отладки.
  • TRACE 🔍 — максимально подробная информация, шаги выполнения.

Виды логов

  • Application logs 🖥 — события внутри приложения.
  • Server logs 🖧 — ошибки и запросы на сервере.
    • Error logs ❌
    • Access logs 🔑
  • System logs ⚙️ — работа ОС и системные события.

Что хранится в логах

  • Время и дата события 🕒
  • Уровень логирования
  • Контекст системы или модуля 🏷
  • Текст сообщения
  • Стек вызовов при ошибках 🧾

🔧 Инструменты для просмотра логов

  • Lens 👓 — визуализация логов.
  • Grafana Loki 📊 — мониторинг и поиск по логам в реальном времени.


Почитай тут https://habr.com/ru/companies/yandex_praktikum/articles/739058/

А посмотри вот здесь:
https://youtu.be/keBrfAhFiP4?si=PCnASeFENyotAuDn