Anton Sidorov homepage

Bookmark this to keep an eye on my project updates!

Follow me on GitHub

Брокер сообщений Message Broker Bus

Зачем

  • принцип “глупая шина (канал) умные клиенты”

MQ

Плюсы-минусы

Плюсы

Минусы

  • Дополнительный архитектурный слой
  • Затраты на мониторинг, настройку, управление
  • влияет на общую надежность и безопасность системы

Patterns

  • Advanced transient messaging
    • ZeroMQ
  • Message-oriented persistent - Message Bus
    • Транспорт
  • Log-based message queue
  • Messaging Patterns
    • MS
    • Pub\Sub События
    • Task (Worker) Queue
    • Очереди с приоритетом
    • Content-Based Routing
    • Filter message
    • Dynamic Router
    • Splitter
    • Dead Leater Channel
    • Message Translator
    • Wire Tap - наблюдение за сообщениями
  • Event Sourcing
  • Тип способа получения сообщений
    • Pull (по запросу)
    • Push (подписка)
  • Как узнать когда сообщение в очередь добавлено - Timestamp

Технологии

  • Транспорт
    • Kafka
    • RabbitMQ
    • Azure service bus
    • MSMQ
    • SQL Server
    • Azure Queue Storage
    • Azure Service Bus
    • Amazon SQS

Выбор

Alt text Alt text MB VS

RMQ vs Kafka

RabbitMQ

Плюсы:

  • Message timing control (controlling either message expiry or message delay).
  • Advanced fault handling capabilities, in cases when consumers are more likely to fail to process messages (either temporarily or permanently).
  • Advanced and flexible routing rules.
  • Simpler consumer implementations.
  • перешли на постоянные (persistent) очереди, которые не удаляются в момент разрыва подключения, но повесили на них политику «протухания» (expire), если пользователя нет более 5 минут.
  • Приоритет сообщений

Минусы:

  • нет параметра Expire для обменников (только для очередей)
  • Нет шардирования, в kafka есть topic-несколько partition, есть несколько инстансов где очереди размещены
  • Производительность ниже Kafka
Kafka

Плюсы:

  • распределенный горизонтально масштабируемый отказоустойчивый журнал коммитов
  • Поток событий
  • Шардинг из коробки
  • Strict message ordering.
  • Message retention for extended periods, including the possibility of replaying past messages.
  • The ability to reach a high scale when traditional solutions do not suffice.

Минусы:

  • Наиболее полно API Kafka поддерживается только в языках Java и Scala. В других языках поддержка не всегда полная, поэтому фреймворки Kafka Connect и Kafka Streams созданы.
  • Нет приоритета сообщений