Можно ли разместить PouchDB в режиме простоя лямбда? - PullRequest
0 голосов
/ 23 февраля 2020

Мне любопытно, можно ли использовать PouchDB в AWS лямбде.

Ключевой вопрос (на мой взгляд) заключается в том, очищает ли когда-либо PouchDB NodeJS Событие L oop (позволяя лямбду функция для возврата и приостановления). Это будет иметь решающее значение для получения выгоды от лямбда.

Кто-нибудь знает, можно ли настроить PouchDB на запуск только тогда, когда он фактически обрабатывает запрос. Например, если он запланирует таймеры для периодического опроса, это приведет к заполнению события l oop и сделает невозможным размещение на Lambda, поскольку время выполнения будет составлять 15 минут вместо нескольких сотен мс.

Цель для размещения базы данных с богатой индексацией, но доступной только ad-ho c (без экземпляра облака, выделенного для ее размещения).

В идеальной конфигурации будет создан контекст выполнения Lambda. в течение 15 минут по запросу и только изредка фактически запускает код специально для обработки входящих запросов (и для выполнения репликации из этих запросов в постоянное хранилище), прежде чем снова перейти в режим ожидания. В какой-то неизвестный момент AWS соберет мусор для экземпляра. Любой последующий запрос, по сути, будет заново запускать PouchDB с нуля.

PouchDB в лямбде даст мне преимущество постепенно обновляемых представлений MapReduce для набора данных, быстро сохраняемого в памяти. Я ожидаю иметь живую репликацию (только для записи) на второй PouchDB, индексы которого были загружены по требованию из S3 (через адаптер LevelDown S3). Между ними это обеспечило бы постоянство индексов, быстрый доступ в памяти, но доступность по требованию.

1 Ответ

0 голосов
/ 23 февраля 2020

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

Я использовал pouchdb из Node для репликации с couchdb, который синхронно выполнялся до завершения.

Я получил дамп текущих токовых дескрипторов ввода-вывода через wtfnode. Единственным выдающимся IO, казалось, был сам REPL. Это говорит о том, что после завершения репликации нет активных соединений или ожидающих событий.

Следующий шаг - запустить его в лямбду и реплицировать данные в pouchdb с couchdb внутри лямбды, доказывая, что его выполнение будет фактически завершено.

...