Обработка одновременных запросов

Я создаю службу рекомендаций, которая рекомендует элементы на основе варианта использования. Для этого клиенту необходимо вызвать наш API Функциональность API:

  1. Клиенты звонят со списком необходимых предметов и вариантом использования.
  2. На основании этого мы вернем точные детали.

Куча:

  • АВС Лямбда
  • Amazon DynamoDB

Проблема: как мы обрабатываем одновременные запросы на выборку для одного и того же варианта использования.

Решения:

Поток с использованием пессимистической блокировки:

  1. Приобретите dbLock в списке доступных элементов для варианта использования.
  2. Удалить элементы из исходной БД
  3. Освободить замок

Это увеличит задержку API.

Поток с использованием оптимистической блокировки:

  1. Получите доступные предметы.
  2. Удалить из списка и вернуться.

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

Есть ли другой более эффективный способ обработки одновременных запросов?

0 ответов