Паттерны асинхрона: Request-Reply, Publish-Subscribe, Point-to-Point
Архитектурные паттерны Request-Reply, Publish-Subscribe, Point-to-Point используются для взаимодействия между компонентами системы.
Например, в распределенных системах и микросервисных архитектурах
🔘 Request-Reply
Request-Reply — паттерн, в котором клиент отправляет запрос и получает ответ от сервера через очереди сообщений.
Как работает
🔘клиент отправляет запрос в очередь сообщений
🔘сервер извлекает запрос из очереди и обрабатывает его
🔘cервер отправляет промежуточный ответ клиенту (опционально)
🔘сервер помещает ответ в очередь ответов
🔘клиент извлекает ответ
Зачем нужно
Для реализации асинхронного взаимодействия, когда требуется ответ на запрос.
➖подходит для микросервисов и систем, где требуется подтверждение выполнения задач
➖архитектурно можно реализовать через REST API
Плюсы и минусы
➕уменьшает нагрузку на клиентские и серверные ресурсы за счет асинхронной обработки
➕обеспечивает четкую последовательность действий благодаря использованию очередей
♥️задержка при больших объемах данных
♥️сложность реализации для управления состоянием запросов и ответов
👍 Пример: асинхронные веб-сервисы, обработка задач в распределенных системах., запросы к БД
💙Publish-Subscribe
Publish-Subscribe -- паттерн, в котором публикатор отправляет сообщения множеству подписчиков через брокера сообщений (например, Kafka, RabbitMQ)
Как работает
💙публикатор отправляет сообщение в канал (топик)
💙подписчики этого канала получают сообщение
Зачем нужно
Для рассылки сообщений множеству получателей одновременно.
К примеру, уведомлений или обновлений
API паттерны: подписка на события через WebSockets или другие механизмы push-уведомлений
Плюсы и минусы
💙высокая масштабируемость (можно добавлять новых подписчиков без изменения кода отправителя)
💙нет прямой зависимости между отправителем и получателями
💙можно рассылать одно сообщение многим подписчикам.
♥️нужно управлять подписками и качеством обслуживания
♥️непредсказуемая задержка доставки из-за обработки сообщений подписчиками
💙 Примеры: системы уведомлений, новостные рассылки, обновления в реальном времени, интернет вещей (IoT)
🟣Point-to-Point
Point-to-Point -- паттерн, в котором один отправитель передает сообщение одному получателю через очередь сообщений.
Работает также как Publish-Subscribe, только тут 1 получатель
Зачем нужно
Для гарантированной доставки сообщений одному получателю. Обеспечивает строгую очередность и порядок обработки.
⏩ может быть реализовано с помощью систем управления очередями (например, JMS, RabbitMQ)
⏩API паттерны: с помощью REST API, работающих с брокерами сообщений
Плюсы и минусы
➕гарантированная доставка сообщений (надежное хранение сообщений в очереди)
➕последовательный порядок обработки сообщений в очереди
➕независимая работа отправителя и получателя
♥️ограничение на одного получателя
♥️потенциальная задержка из-за обработки очереди
➡️ Пример: очереди задач, системы обработки заказов, логирование, финансовые транзакции
#проектирование #архитектура
Post #470
13.3K
- 🔥 26
- ❤ 12
- 👍 11