Как я могу решить проблемы масштабирования с использованием бессерверной базы данных и MongoDB?
Я знаком с serverless и MongoDB и хотел бы знать, есть ли какие-либо масштабируемые способы соединения этих двух миров. Насколько мне известно, вы не можете взаимодействовать с MongoDB в стиле RESTful. Вместо этого открытие соединения, которое предполагается использовать повторно.
Допустим, я использую AWS Lambda как часть бессерверного API. Когда лямбда холодная, вам нужно открыть новое соединение с MongoDB, и пока лямбда все еще горячая, соединение остается открытым. Это решение подходит, но когда у вас будет всплеск трафика на API, вы столкнетесь с лимитом подключения, установленным MongoDB.
Есть ли способ преодолеть это ограничение на количество подключений в мире без гражданства, таком как лямбда?
Ответы
Лямбда-функции являются асинхронными и не сохраняют состояния, и, используя пул соединений с базой данных, вы добавляете к нему состояние и разрушаете цель.
Если вам нужен пул соединений, запуск вашего сервера через EC2 - лучший подходящий вариант на AWS.
Однако, если вам по-прежнему нужен пул соединений с лямбда-выражением, вы можете создать пул, который обычно используется, MongoClient.connect(uri, { poolSize: 10 })и поддерживать его в тепле, используя события облачного наблюдения, создав фиктивный триггер.
Вы обязательно заметите улучшение производительности.
Идея для размышления: вы можете использовать Kinesis для запуска Lambda. Это ограничит количество одновременных выполнений количеством шардов, например, 8 шардов на 8 одновременно.
Таким образом, вы можете сохранить свое соединение открытым и заработать лимит открытого соединения, чтобы избежать проблем с масштабированием.
Этот тип вещей (для одного вызова, независимо от того, является ли соединение новым или повторно используемым) вы можете отслеживать с помощью некоторых инструментов мониторинга, которые помогут вам поддерживать статус масштабирования с течением времени, это поможет управлять возрастом итератора MongoDB и Kinesis. Такие как:
- AWS X-Ray
- Метрики AWS Cloudwatch
- Датадог
- Лумиго
К слову, я работаю в компании под названием Lumigo. У нас есть инструмент распределенного мониторинга, который может помочь вам отслеживать проблемы масштабирования производства.