Anton Sidorov homepage

Bookmark this to keep an eye on my project updates!

Follow me on GitHub

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

Зачем

  • асинхронное взаимодействие
  • 1 Издатель - Х подписчиков
  • Буфер запросов
  • Очередь задач

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

Плюсы

  • Масштабируемость
  • Гарантированная доставка
  • Буферизация
  • Слабая связность ИС Low Coupling
  • принцип “глупая шина (канал) умные клиенты”

Минусы

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

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

Технологии

Критерии выбора

Alt text Alt text MB VS

RMQ vs Kafka

  • RMQ
  • Kafka
    • vs RMQ: - сообщения хранятся (так спроектирована), одно и то же сообщение может быть обработано сколько угодно раз разными консьюмерами и в разных контекстах - выше производительность, Kafka легче масштабируется горизонтально - строгая последовательность сообщений - меньше гибкости в роутинге сообщений - нет приоритета сообщений - vendor lock: Kafka использует собственный двоичный протокол поверх TCP. Вы не сможете так просто удалить или заменить эту платформу - транзакции между несколькими топиками

TODO

RMQ vs ActiveMQ Artemis

  • RMQ
  • Artemis
    • vs RMQ
      • поддерживает более широкий спектр протоколов обмена сообщениями (+ JMS)
      • RMQ имеет наилучшую пропускную способность
      • Менее гибкая маршрутизация сообщений
        • Artemis Реализует концепцию “адреса” для маршрутизации сообщений и поддерживает различные типы маршрутизации, включая anycast и multicast
          • Паттерны: PUB-SUB
        • RMQ концепцию “обмена”. Exchange в RabbitMQ - это компонент маршрутизации сообщений, который определяет, как сообщения распределяются по очередям
          • Паттерны: Message Queue, PUB-SUB, RPC, Routing