Aws Lambda - Работа с очень высокими параллельными запросами - PullRequest
2 голосов
/ 27 октября 2019

это вопрос из двух частей.

Мы переносим локальную структуру в облако aws. Платформа связывает влиятельных людей Instagram с брендами, заинтересованными в маркетинге своих продуктов.
Инфлюэнсеры получают ссылки на торговые марки для отображения в своих аккаунтах в Instagram. Есть одна функциональность, где нам нужно подсчитать, сколько подписчиков пролистывает определенную ссылку для влиятельного лица. Нашей первой реализацией было создание лямбды, которая получает запрос через шлюз API, содержащий данные, идентифицирующие влияющего и бренд, отправляет в SQS соответствующие данные и отправляет перенаправление на URL бренда.

Проблема сложная,Это означает, что клиент попросил, чтобы наше решение могло обрабатывать не менее 20 тысяч одновременных запросов, поскольку в прошлом некоторые из их влиятельных лиц, имевших миллионы подписчиков, могли генерировать такие мгновенные «скачки»когда они что-то опубликовали. Пределы лямбды для нашего региона составляли 1000 одновременных исполнений в секунду. Мы попросили AWS поднять его, и они подняли его до 2500 запросов в секунду. Все еще намного ниже того, что спрашивает потребитель. Существует также ограничения одновременных запросов API-шлюза для рассмотрения. Похоже, что шлюз API также начинает слишком много запросов.

Есть ли лучший способ справиться с такого рода требования? Какова будет лучшая практика? Нам просто нужно сосчитать, что какой-то влиятельный человек получил удар вверх и перенаправить. Сегодня мы просто создаем ссылку с идентификатором влияния, идентификатором бренда и URL-адресом для перенаправления. Есть ли лучшая альтернатива для решения этой проблемы, чем использование лямбд? Можно ли справиться с этим с помощью безсерверного подхода? Было бы лучше использовать несколько серверов EC2 или использовать beanstalk с apache или nginx?

А теперь второй вопрос. Как мы можем протестировать такие параллельные запросы с AWS? Просто используя Jmeter, когда мы увеличиваем количество одновременных запросов, наша лямбда-функция даже не получает их. Я полагаю, что слишком много запросов к AWS можно было бы ошибочно считать DDOS-атакой. Как протестировать любые решения AWS, которые должны быть способны принимать очень высокие одновременные запросы?

Спасибо.

Редактировать: Чтобы было ясно, мы не предоставляем контент пользователю. Нам просто нужно посчитать, что кто-то сделал запрос, и сделать перенаправление. Информация о том, кто сделал запрос и URL, который будет перенаправлен, будет указана в параметрах по запрашиваемой ссылке. Нам просто нужно собрать эту информацию, которую легко сделать в лямбде, и выполнить перенаправление 301.

1 Ответ

0 голосов
/ 27 октября 2019

Ваш вариант использования выглядит хорошо подходящим для Lambda @ Edge, который использует конечные точки CloudFront для лямбда-выполнения. Это идеальное сочетание вычислений и кэша на периферии для таких вариантов использования, как ваш.

Комбинируя Lambda @ Edge с другими сервисами AWS, разработчики могут создавать мощные веб-приложения на границе, которые автоматически масштабируются. вверх и вниз - с нулевой исходной инфраструктурой и административными усилиями, необходимыми для автоматического масштабирования, резервного копирования или избыточности центра обработки данных.

Ограничения не совсем то, что вы ищете, но я думаю, что многие запросы будутобслуживать ответ из кэша вместо того, чтобы требовать лямбда-выполнения. Вот таблица пределов для Lambda @ Edge

enter image description here

Примечание: Если по какой-либо причиневам все еще нужен более высокий лимит, тогда вы всегда можете обратиться в службу поддержки AWS, которая, я считаю, любит такие проблемы и обязательно поможет вам

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...