Мне нужно разработать оптимизированное по стоимости решение, которое должно быть aws облачным. Проблема, которую я должен решить, состоит в том, что у меня 90 миллионов сообщений, приходящих из базы данных. Каждое событие является независимым, и для его обработки не требуется упорядочивание. Я должен обработать каждое сообщение и выполнить какую-то операцию, а затем поместить ее в службу поиска Elasti c.
Решение, которое, как я думал, находится ниже одного
AWS API-->LAMBDA-->SNS-->SQS(1)-->LAMBDA-->ES
--->SQS(2)-->LAMBDA-->ES
В основном из SNS используется для одновременного использования нескольких SQS.
При этом я подумал, почему мы не можем использовать S3, чтобы запись могла быть сохранена навсегда и может быть реплицирована в другой регион. Также мы можем вызвать Лямбда-функция для каждого события пут в S3.
Так что мой план - если мы будем использовать S3, то для 90 миллионов записей мы будем создавать 90 миллионов файлов в s3, а затем, используя фронт облака, мы можем читать или даже без облака из мы можем читать из s3 с помощью лямбда-функции.
API-->S3-->lambda--->ES
Пропускная способность S3 put равна 3500 / секунда / папка, а out-out - 5000 / сек / префикс. Стоимость запроса на размещение в s3 и sqs практически одинакова.
Может кто-нибудь сказать мне, что не так с использованием решения на основе S3. Я знаю, что использование SQS здесь выглядит очень очевидным, но каков риск, если мы используем S3 в этом случае?
Пропускная способность, которую я ищу, составляет 5 тыс. В секунду.
Даже стоимость мудрый SQS выглядит дороже, потому что мне нужно платить за SNS + SQS, но если мы используем S3 только S3 пут и лямбда
Пожалуйста, предложите