Статьи

AWS Lambda с MySQL (RDS) и шлюзом API

AWS и архитектура приложения

Я работал над Lambda для некоторых проектов, и недавно мне пришлось спроектировать и написать сервис FAS с использованием функций Lambda и чтения / записи данных в RDS (MySQL). Я делюсь тем, что узнал здесь.

Прежде чем мы начнем

Предпосылки

В этом руководстве предполагается, что вы знакомы с основными лямбда-операциями и консолью AWS, RDS, IAM и Node.js.

Чтобы понять, подходит ли вам серверное приложение или нет, вам необходимо понять ограничения лямбды , что такое холодный старт и как работает параллелизм в лямбде. Модель исполнения Lambda, конечно, отличается от архитектуры традиционных веб-приложений в Spring.

Что такое холодный старт?

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

Вам также может понравиться:  Запрос RDS MySQL DB с помощью функции NodeJS Lambda

Мы можем использовать Cloud Watch Timer / фиктивный запрос, чтобы сохранить лямбды в тепле .

совпадение

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

Вы можете настроить функцию с зарезервированным параллелизмом, чтобы гарантировать, что она всегда может достичь определенного уровня параллелизма. Эта функция может работать с этим максимальным количеством параллелизма без прерывания или ожидания.

Лимит лямбда-валюты по умолчанию равен 1000. Обратите внимание, что одна масштабированная лямбда-функция может ухудшить производительность любой другой лямбда-функции в том же регионе.

совпадение

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

Повторите Поведение

Лямбда-функции будут повторяться три раза, прежде чем они выйдут из строя из-за необработанной ошибки приложения. Если вы добавили  context.succeedи не обработали исключения должным образом, Lambda не будет повторять функцию и вместо этого будет предполагать, что функция была успешной. Если вы добавили  context.fail, Lambda повторит функцию.


JavaScript