У меня есть модуль, который поддерживает экземпляр подключения к серверу Redis:
const getClient = (() => {
let client;
return () => {
if (!client) client = clientFactory(); // lazy loading of the redis client
return client;
}
})();
И этот модуль предназначен для развертывания в AWS Lambda.Согласно рекомендациям , клиент redis в приведенном выше закрытии никогда не будет уничтожен вручную в пользу повторного использования контекста и будет автоматически уничтожен при уничтожении экземпляра лямбда-вызова.
Теперьпроблема в том, что у меня есть некоторые другие модули, которые также будут развернуты в лямбда-выражениях в качестве отдельных лямбда-функций, и мне потребуется использовать клиентский модуль redis.Должен ли я установить модуль redis в качестве слоя многократного использования или я должен развернуть модуль как еще одну отдельную функцию и напрямую вызвать функцию из вызывающих модулей?
Обеспокоенность по поводу использования слоя: будет выполнено создание экземпляра подключения redisдля каждого отдельного вызывающего модуля, что не годится для повторного использования контекста.
Обеспокоенность по поводу вызова другой лямбда-функции: издержки сети.
Как я понимаю, вызов между двумя лямбда-функциями вызывает вызывающую функцию.Запрос API к вызываемому абоненту, создающий дополнительную нагрузку на сеть.Так будет ли это иметь значение больше, чем плохое повторное использование контекста?