Событийные паттерны с EventBridge

Развёртывание приложений на AWS

Dunieski Otano

Amazon Web Services Solutions Architect

Один заказ — четыре реакции

  • Один заказ должен поступить в биллинг, обработку, аналитику и email
  • Прямые вызовы всех четырёх сервисов ненадёжны и медленны
  • Одно событие передаётся всем потребителям

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

Развёртывание приложений на AWS

Выбор подходящего сервиса обмена сообщениями

Сетка 2×2 сервисов AWS: SQS — очередь с моделью производитель-потребитель, SNS — pub/sub-рассылка нескольким подписчикам, EventBridge — шина событий с маршрутизацией по правилам, Kinesis — упорядоченные шарды с воспроизведением

  • SQS: одна очередь, одна группа потребителей, доставка минимум раз
  • SNS: pub/sub, отправка одного сообщения многим подписчикам
  • EventBridge: маршрутизация событий по содержимому к нескольким целям
  • Kinesis Data Streams: упорядоченная потоковая передача с воспроизведением
Развёртывание приложений на AWS

Паттерн fanout

  • Одно событие должно поступить нескольким потребителям одновременно
  • Публикация в топик SNS
  • Каждая очередь SQS подписывается на топик
  • Каждый потребитель получает свою копию независимо

Паттерн fanout SNS→SQS: один топик SNS публикует сообщения в несколько очередей SQS, каждая из которых независимо обслуживает своего потребителя в своём темпе

Развёртывание приложений на AWS

Фильтрация: потребители получают только нужное

  • Без фильтров каждый подписчик получает все события
  • Политики фильтрации подписок SNS: фильтрация по атрибутам сообщений
  • Фильтры содержимого EventBridge: сопоставление по полям события
  • Каждый потребитель получает только нужные ему события

Политика фильтрации подписок SNS и фильтр содержимого EventBridge: каждый потребитель получает только события, соответствующие его правилу фильтрации, что снижает лишнюю обработку и затраты

Развёртывание приложений на AWS

Маршрутизация с помощью EventBridge

Схема маршрутизации EventBridge: шина событий получает события из нескольких источников, правила сопоставляют паттерны событий, совпавшие события маршрутизируются в Lambda, SQS и другие целевые сервисы

  • Шина событий: принимает события из множества источников
  • Правило: паттерн события для отбора определённых событий
  • Цель: куда отправляются совпавшие события
  • Одно событие может быть направлено к нескольким целям
Развёртывание приложений на AWS

Потоковая передача с Kinesis Data Streams

  • Непрерывный поток записей в реальном времени
    • Упорядоченные записи внутри шарда
    • Воспроизведение: потребители могут читать с любой точки
    • Несколько потребителей читают один поток независимо друг от друга
    • Подходит для кликстрима, телеметрии и высоконагруженных данных

Архитектура Kinesis Data Streams: производители записывают упорядоченные записи в пронумерованные шарды, три потребителя независимо читают с разных позиций, стрелка перемотки показывает возможность воспроизведения

Развёртывание приложений на AWS

Lambda как потребитель событий

  • Lambda может запускаться из SQS, SNS, EventBridge, Kinesis
  • Сопоставление источников событий автоматически опрашивает SQS и Kinesis
  • SNS и EventBridge отправляют события в Lambda напрямую
  • Обработка почти в реальном времени без управления серверами

Lambda запускается из четырёх источников событий: сопоставление источников событий опрашивает SQS и Kinesis пакетами, тогда как SNS и EventBridge отправляют события в Lambda напрямую

Развёртывание приложений на AWS

Давайте потренируемся!

Развёртывание приложений на AWS

Preparing Video For Download...