Skip to content
leonid-belousovPublic

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Latest commit

 

History

6 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Причина использование Kafka в проекте.

Использование Kafka или любого другого брокера сообщений (например, RabbitMQ) в данном проекте обусловлено требованиями по масштабируемости, надождности и устойчивости системы. Ниже приведены основные преимущества использования Kafka.

1. Обработка событий в реальном времени

Kafka отлично подходит для передачи событий в реальном времени, таких как:

  • Событий доставки сообщения пользователю.
  • Уведомление об изменение статуса (онлайн/оффлайн).
  • Логирование действий для аудита.

В рамках проекта Kafka может обрабатывать:

  • Отправку уведомлений по электронной почте.
  • Обновление статусов пользователей.
  • Восстановление истории переписки.

2. Масштабируемость

В проекте мессенджера, где множество пользователей обмениваются сообщениями, нагрузка на серверы может быть значительной. Kafka позволяет:

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

3. Отделение микросервисов

Микросервисная архитектура требует независимости компонентов системы. Kafka служит посредником для асинхронного взаимодействия сервисов:

  • Один сервис публикует сообщения (например, отправка или редактирование сообщения).
  • Другие сервисы подписываются на эти события (например, сервис уведомлений по электронной почте).

4. Устойчивость и отказоустойчивость

Kafka сохраняет сообщения в очередях (топиках) на диске, что:

  • Делает систему устойчивой к сбоям.
  • Позволяет сервисам восстанавливать обработку сообщений после перезапуска.

5. Контроль нагрузки на сервер

В SignalR (особенно при большом количестве подключений) сервер может быть перегружен обработкой данных. Kafka помогает:

  • Снизить нагрузку на сервер, позволяя ему работать только с SignalR-соединениями.
  • Перенести обработку других задач (уведомления, логирование, восстановление истории) на очередь событий.

6. Гибкость и обработка больших объемов данных

Kafka может обрабатывать огромные объемы сообщений благодаря партициям и кластеризации:

  • Это снижает нагрузку на сервер базы данных (MSSQL).
  • Обеспечивает высокую скорость доставки сообщений даже при миллионах пользователей.

Примеры использования Kafka в проекте

Отправка сообщений

  1. Клиент через SignalR отправляет сообщение.
  2. Сообщение публикуется в Kafka.
  3. Другой микросервис читает это сообщение из Kafka и:
  • Обновляет базу данных.
  • Передает сообщение другим пользователям.

Уведомления по электронной почте

  1. Если пользователь оффлайн, событие "непрочитанное сообщение" отправляется в Kafka.
  2. Сервис уведомлений (background job) читает это событие и отправляет письмо.

Обновление статусов

  1. Событие изменения статуса (онлайн/оффлайн) публикуется в Kafka.
  2. Другие сервисы (например, мониторинг или аналитика) подписываются на это событие.

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

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages