Как сервис должен определить, кто получит единственный доступный слот скидки, если несколько запросов приходят практически одновременно? Как решать проблему с TTL резервирования, если длительность оплаты непредсказуема?

Победителя определяет атомарное резервирование в общей БД, а не время прихода запроса на разные серверы. TTL не должен освобождать слот, пока возможна неразобранная успешная оплата.

Короткий ответ

Что ответить на собеседовании

Победителя определяет атомарное резервирование в общей БД, а не время прихода запроса на разные серверы. TTL не должен освобождать слот, пока возможна неразобранная успешная оплата.

Подробный разбор

Ответ с пояснениями

Победителя определяет атомарное резервирование в общей БД, а не время прихода запроса на разные серверы. TTL не должен освобождать слот, пока возможна неразобранная успешная оплата.

Создайте уникальный резерв по акции/слоту с ключом покупки и явными состояниями. Для долгой оплаты согласуйте продление резерва или срок оплаты у провайдера. По истечении времени сначала проверьте или отмените платёж, затем освобождайте место; иначе позднее подтверждение выдаст скидку двум покупателям. Обработчик webhook должен быть идемпотентным и сверять поколение резерва. Правила поздней оплаты и компенсации определяются заранее, а не при первом конфликте.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее