Обработка одновременных запросов
Я создаю службу рекомендаций, которая рекомендует элементы на основе варианта использования. Для этого клиенту необходимо вызвать наш API Функциональность API:
- Клиенты звонят со списком необходимых предметов и вариантом использования.
- На основании этого мы вернем точные детали.
Куча:
- АВС Лямбда
- Amazon DynamoDB
Проблема: как мы обрабатываем одновременные запросы на выборку для одного и того же варианта использования.
Решения:
Поток с использованием пессимистической блокировки:
- Приобретите dbLock в списке доступных элементов для варианта использования.
- Удалить элементы из исходной БД
- Освободить замок
Это увеличит задержку API.
Поток с использованием оптимистической блокировки:
- Получите доступные предметы.
- Удалить из списка и вернуться.
Если какой-либо другой поток попытается удалить элементы из доступного списка, который уже был удален, отправьте исключение клиенту, чтобы снова вызвать API.
Есть ли другой более эффективный способ обработки одновременных запросов?