TGStat
TGStat
Type to search
Advanced channel search
  • flag English
    Site language
    flag Russian flag English flag Uzbek
  • Sign In
  • Catalog
    Channels and groups catalog Regional compilations Thematic compilations Платные каналы Search for channels
    Add a channel/group
  • Ratings
    Rating of channels Rating of groups Posts rating
    Ratings of brands and people
  • Analytics
  • Search by posts
  • Telegram monitoring
  • Promotion
    Advertising through Yandex Business Advertising in channels through TGStat Agency Advertising on TGStat.ru website
GetAnalyst - Навыки • Системный анализ • Бизнес-анализ

4 Jun 2025, 09:55

Open in Telegram Share Report

🧩 Как встроить Kafka в архитектуру, и главное зачем: разбор на примере проекта #GreenChargeGA 🧩

Ранее мы спроектировали схему архитектуры проекта для станций зарядки электро-авто.

Но если в архитектуре не использовать брокер сообщений, а делать прямые синхронные вызовы между микросервисами (через REST/gRPC), могут возникнуть проблемы:

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

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

➖ Сложность в аналитике и аудите

Чтобы решить их, в архитектуру встраивают брокеры сообщений.



Давайте разберём как это работает на примере:
👉 Сценарий обработки события окончания зарядки



👉 Без брокера

1. Сервис Телеметрии отправляет запрос на API Gateway об окончании зарядки

2. API Gateway проксирует его на Сервис Платежей

3. Сервис Платежей регистрирует кол-во израсходованной энергии, определяет цену и списывает средства с банковской карты, привязанной к ЛК пользователя

4. Сервис Платежей вызывает Сервис Программы Лояльности для начисления бонусных баллов

5. Сервис Платежей вызывает Сервис Уведомлений для отправки уведомления

6. Возврат ответа на Сервис Телеметрии об успешной обработке события завершения зарядки

❌ Проблема:
Если Сервис Программы Лояльности или Сервис Платежей недоступны, то....? Начинаем "городить костыли" в алгоритме с ретраями (повторами) и не только... 🥲



👉 С брокером Kafka

1. Сервис Телеметрии отправляет событие (сообщение) charging.finished в Kafka об окончании зарядки, в топик charging-events. ✅ На этом он выполнил свою миссию по зарядке и более ничего не ждёт.

2. Сервис Платежей подписан на топик charging-events и событие charging.finished в Kafka. Он забирает оттуда это событие, когда готов и не нагружен (хоть сразу, хоть через 3 часа)

3. Сервис Платежей обрабатывает это событие:

3.1. Регистрирует кол-во израсходованной энергии, определяет итоговую цену и списывает средства с карты

3.2. Отправляет событие о списании средств charging.paid в Kafka, топик charging-events
✅ На этом Сервис Платежей выполнил свою миссию и более ничего не ждёт.

4. На событие charging.paid в топике charging-events подписаны Сервисы Программы Лояльности и Уведомлений.
Когда они будут готовы, то тогда и заберут в обработку событие, и каждый обработает его по отдельности.


✅ Преимущества:
Даже если сервисы Платежей, Лояльности или Уведомлений будут недоступны или будут реагировать ошибкой, необработанное событие об окончании зарядки / завершении платежа будет храниться в брокере и ожидать обработки.

Обычно обработка происходит очень быстро, что процесс выглядит как-будто синхронно, но на самом деле это не так. За счёт брокера мы организовали фоновую обработку событий (=задач), когда один сервис не ждёт завершения работы другого.

Брокер - как временная БД, гарантирует, что событие рано или поздно обработают.
А сервисам, которые участвуют в сценарии, не надо рассчитывать на его строго-последовательное и синхронное выполнение.



👉 Итого получаем:
Внедренный механизм асинхронной обработки событий с использованием Kafka сделал систему более устойчивой к сбоям и гибкой для масштабирования.



Если ещё не изучали Kafka, то здесь можно найти самые важные материалы:
🔗 ссылка


#АрхитектураGA
GetAnalyst - Навыки • Системный анализ • Бизнес-анализ
🔵 C4 / Container - пример микросервисной архитектуры #GreenChargeGA 🔵 Уровень C4 / Container показывает независимые по коду приложения в системе — так называемые контейнеры [к]. Что включает схема на этом уровне: ✔️ Пользователи ✔️ Внешние системы ✔️ Мобильные, веб- и десктоп приложения [к] ✔️ Мик...

4.7k 4 136 49
Catalog
Channels and groups catalog Channels compilations Search for channels Add a channel/group
Ratings
Rating of Telegram channels Rating of Telegram groups Posts rating Ratings of brands and people
API
API statistics Search API of posts API Callback
Our channels
@TGStat @TGStat_Chat @telepulse @TGStatAPI
Read
Академия TGStat Telegram Research 2019 Telegram Research 2021 Telegram Research 2023
Contacts
Справочный центр Support Email Jobs
Miscellaneous
Terms and conditions Privacy policy Public offer
Our bots
@TGStat_Bot @SearcheeBot @TGAlertsBot @tg_analytics_bot @TGStatChatBot