digital-garden/dev/architecture/Брокер сообщений.md
Struchkov Mark fed7b2b637
All checks were successful
continuous-integration/drone/push Build is passing
Обновление
2024-11-04 19:12:20 +03:00

53 lines
2.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
aliases:
tags:
- maturity/🌱
date: 2024-07-02
---
Брокеры способны обрабатывать 10000+ сообщений в секунду
Для чего используются:
- Межсервисное общение
- Асинхронная запись логов приложения
- Тяжелые ассинхронные задачи
Требования к брокерам:
- гарантия доставки сообщений
- at least once delivery. Гарантируется, что наше сообщение получит хотя бы один клиент.
- at most once delivery. Не гарантирует доставку.
- exactly once delivery. Гарантируется, что только один получатель получит сообщение.
- порядок передачи сообщений
- управление размером очереди
- зеркалирование
- масштабирование
**Терминология:**
- Брокер - это приложение, которое реализует модель [AMQP](Advanced%20Message%20Queuing%20Protocol.md). Которое принимает соединения клиентов для маршрутизации сообщений и т.п.
- Сообщение (message) - это единица передаваемых данных. Включая мета-информацию.
- Потребитель (consumer) - приложение, которое читает сообщения из очереди.
- Производитель (producer) - приложение, которое отправляет сообщения в брокер.
Примеры реализаций брокеров сообщений:
- [00 RabbitMQ](00%20RabbitMQ.md)
- [00 Kafka](00%20Kafka.md)
- [[../../../../_inbox/NATS|NATS]]
- [00 Redis](../../meta/zero/00%20Redis.md) (pub/sub, stream)
![[../../meta/files/images/Pasted image 20241103222905.png]]
***
## Мета информация
**Область**:: [[../../meta/zero/00 Архитектура ИС|00 Архитектура ИС]]
**Родитель**::
**Источник**::
**Автор**::
**Создана**:: [[2024-07-02]]
### Дополнительные материалы
-
### Дочерние заметки
<!-- QueryToSerialize: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->
<!-- SerializedQuery: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->
- [[00 RabbitMQ]]
- [[Advanced Message Queuing Protocol]]
- [[NATS]]
<!-- SerializedQuery END -->