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