чтобы перекладывать это на пользователя?
Давайте поразмышляем без привязки к AWS и их конкретным сервисам. Тут нужно представить что такое event в масштабных инфраструктурах. Возьмём к примеру абстрактное приложение которое работает на нескольких микросервисах в единичном экземпляре. Тут все просто, есть событие и оно одно и появилось в одном месте, его легко принять и обработать. Если мы добавим отказоустойчивость и сделаем два экземпляра, то у нас уже возникает вопрос, а как согласовывать одинаковые события которые происходят с двух местах (например запись файла и его копии) и тут можно обойтись единым сервисом обработки который будет проверять дубликаты и находить пары. А если мы представим себе миллион высоко нагруженных микросервисов каждый из которых производит сотни ( тысячи) таких event в секунду. Тут уже не так просто будет искать дубликаты и даже если это сделать, то на это будет тратиться время, тем самым увеличивая задержки при общении между сервисами. Чтобы этого не допускать очень часто принимается решение допускать дублирование событий на уровне единой шины сообщений и событий. Как результат при таком подходе сервисы которым важна скорость просто могут игнорировать дубликаты, а те кому важно отсутсвие дублей могут их обрабатывать. Ещё раз, это общие размышления про архитектуру и ни как не связано с AWS.
Обсуждают сегодня