Как решить проблему объединения баз данных в функции AWS Lambda

Люди всегда в восторге от того, насколько хорош бессерверный подход, но избегают ключевой проблемы, заключающейся в том, как обрабатывать множество экземпляров лямбда.

Обычно обработка многих запросов одновременно не является проблемой, но ваша лямбда обычно интегрируется со многими службами (например, базой данных, SNS, службой электронной почты и т. д.).

Служба SNS, электронной почты может без проблем обрабатывать многие запросы.

С другой стороны, ваша база данных не может.

Обычно в обычном приложении у нас есть пул соединений с базой данных. Это позволяет вашему приложению получать более 100 запросов и обрабатывать запросы с менее чем 100 подключениями к базе данных.

В то время как в лямбде, когда вы получаете более 100 запросов, запрос настолько быстр, что запускает много лямбда для обработки запросов.

В худшем случае он отправляет 100 запросов на подключение к базе данных и максимально отклоняет все запросы.

Я провел бесчисленное количество часов, просматривая stackoverflow, но решения не существовало.

В итоге я сделал следующее:

  1. перед кодом обработчика я создал контейнер IOC с подключением к серверу pgbounce.

2) Я настраиваю pgbounce для подключения к моей базе данных.

3) Я увеличил максимальное количество подключений как к pgbounce, так и к базе данных.

Теперь, когда более 100 лямбда-выражений подключается к pgbounce, он обрабатывает для меня пул базы данных, и все запросы обрабатываются.

Теперь у вас есть узкое место в pgbounce, но это проще решить, чем заставить лямбду использовать тот же экземпляр.

Если вы хотите поговорить об этом подробнее, вы можете забронировать время со мной на

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *