обычные транзакции над БД
Или сервисы надо горизонтально масштабировать?
Тут не отделаться транзакциями. Например, оплата может быть долгим процессом. Держать открытой транзакцию секунды, а то и минуты - очень плохой вариант. При даже средней нагрузке всё рухнет. Поэтому какая-то логика поверх транзакций всё равно нужна А если так, то почему бы и не спроектировать сразу soa? Это весело
Транзакция в БД чисто на изменение данных и лок поля с единицей товара на сохранение Это миллисекунды и буквально несколько запросов чтения/записи Не будет узким горлышком никак
Кстати, допустим пирожок последний остался, и он в корзине у трёх юзеров. Логично было бы убрать пирожки у всех, если он больше не доступен. Но он может быть просто недоступен из-за процесса оплаты. Всё равно нужно убрать, или ждать пока полностью не решится вопрос пирожка?
А если не убрать, то может быть ситуация, что второй юзер попробует купить его, а он не доступен. Просто показывать ошибку?
нужно бой устраивать, победитель забирает все
Не убирать. Но при нажатии кнопки оплатить, если кто-то сейчас этот пирожок покупает, вывести соответствующее сообщение.
с ip адресой покупателя
Есть разные способы решения проблемы. Выбери подходящий тебе 🤷♂
Обсуждают сегодня