Аннулирование кэша в безсерверных приложениях - PullRequest
0 голосов
/ 21 сентября 2018

Я пытаюсь реализовать пользовательский сервис, который имеет GET и PUT API, используя AWS lambda, API gateway и Dynamo в качестве хранилища данных

GET API будет получать данные для заданного userId, и PUT будет обновлятьсяпользовательские данные для данного userId

Мои требования

  • , поскольку пропускная способность GET API велика, мне нужно было бы кэшировать ответ API, чтобы время откликауменьшается в последующих запросах.Кэш также должен иметь TTL.

  • Любой успешный запрос на размещение с тем же идентификатором пользователя будет делать недействительным кэш, а последующий запрос GET будет извлекаться из БД и кэшировать его снова

  • Я мог бы использовать кластер redis для кэширования.Но это может добавить дополнительные накладные расходы на вызов VPC

Вопрос:

  • Я использую AWS-лямбду, используя для реализации бессерверную инфраструктуру.Как мне следует разрабатывать слой кэширования?
  • Возможные решения включают кэширование шлюза API - но в этом методе, как сделать недействительным кеш в случае запросов на обновление

1 Ответ

0 голосов
/ 22 сентября 2018

Вы можете кэшировать на уровне API Gateway и аннулировать кэш, отправив заголовок Cache-Control: max-age=0 в API Gateway (например, из Lambda, который изменяет записи DynamoDB во время запросов PUT).Для этого вам нужно предоставить специальные разрешения IAM .Имейте в виду, что вы можете сделать недействительными только 1000 запросов в месяц бесплатно;после этого с вас будет взиматься плата в размере 0,005 доллара за каждый недействительный путь.

CloudFront имеет аналогичные параметры кэширования и аннулирования, но вы, вероятно, можете получить все те же параметры кэширования непосредственно из API Gateway.

Другим вариантом будет кэширование на уровне DynamoDB с использованием DynamoDB Accelerator .Он обеспечивает значительные улучшения поиска для запросов DynamoDB и обрабатывает аннулирование для вас.С точки зрения ремонтопригодности сложно найти лучший вариант.Недостатком является то, что вы не уменьшите время ожидания так, как если бы вы использовали кеширование CloudFront или API Gateway.

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

Вы можете найти Обзор кэширования AWS , полезный при разработкебольше способов кеширования, в зависимости от ваших потребностей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...