Я новичок в микросервисах и Event-Sourcing, и я пытался найти способ развернуть всю систему на AWS.
Насколько мне известно, существует два способа реализации архитектуры, управляемой событиями:
- Использование AWS Kinesis Data Stream
- Использование AWS SNS + SQS
Итак, моя базовая стратегия заключается в том, что каждая команда преобразуется в событие, которое хранится в DynamoDB, и использует DynamoDB Streams для уведомления других микросервисов о новом событии. Но как? Какое из двух предыдущих решений следует использовать?
К преимуществам первого относятся:
- Порядок сообщений
- Минимум одна доставка
А вот недостатки довольно проблематичны:
- Нет встроенного автомасштабирования (можно добиться с помощью триггеров)
- Нет функции видимости сообщений (очевидно, с просьбой подтвердить это)
- Нет подписки на тему
- Очень строгие транзакции чтения: вы можете улучшить его, используя несколько сегментов из того, что я прочитал здесь у вас должно быть нечетко определенное количество лямбдов с разными приоритетами вызова и нечетко определенная стратегия, чтобы избежать дублирования обработки в нескольких экземплярах одного и того же микросервиса.
Преимущества второго заключаются в следующем:
- Полностью управляется
- Очень высокий ТПС
- Подписки на темы
- Функциональность видимости сообщений
Недостатки:
- Сообщения SQS упорядочены с максимальной эффективностью, но до сих пор непонятно, что они означают. В нем говорится: «Стандартная очередь делает все возможное для сохранения порядка сообщений, но более одной копии сообщения могут быть доставлены не по порядку». Означает ли это, что при наличии n копий сообщения первая копия доставляется по порядку, а остальные доставляются неупорядоченно по сравнению с копиями других сообщений? Или "более того" может быть "все"?
Большое спасибо за любые советы!