Почему Shopify перенесла резервирование запасов с Redis на MySQL
Автор: Hello Interview
Загружено: 2026-08-06
Просмотров: 54600
Описание:
📖 Полный анализ читайте здесь: https://www.hellointerview.com/youtub...
В пиковый период «Чёрной пятницы» Shopify обрабатывает продажи на сумму 5,1 млн долларов в минуту, и каждая из этих операций по оформлению заказа должна резервировать товар, не допуская перепродажи. Долгие годы это работало на Redis. Затем они перешли на MySQL.
Не потому, что Redis был медленным. Redis хорошо справлялся с параллельным доступом. Проблема заключалась в том, что резервирование и реестр запасов находились в двух разных системах, поэтому ни одна транзакция не могла охватить обе, и все возможные сбои происходили именно из-за этого. Функция SKIP LOCKED в MySQL 8 сделала возможной обработку одной строки на единицу товара, что и решило проблему.
🔎 Больше разборов в реальных условиях: https://www.hellointerview.com/youtub...
📄 Оригинальная статья Shopify: https://shopify.engineering/scaling-i...
РАЗДЕЛЫ
0:00 Почему эта статья стоит вашего времени
0:42 Перепродажа против недопродажи
1:24 Что такое резервирование на самом деле
1:54 Дизайн Redis: один ключ на товар
3:38 Срок действия и cron-задание для очистки
4:14 Атомарность с помощью скрипта Lua
5:44 Ошибка, которую нельзя исправить: две системы и одна транзакция
6:32 Перенос в MySQL и конфликты строк
7:48 ПРОПУСК ЗАБЛОКИРОВАН
8:11 Одна строка на единицу товара
8:52 Проблема взрыва строк
10:21 Пополнение пула резервный путь
12:12 Выводы
Повторяем попытку...
Доступные форматы для скачивания:
Скачать видео
-
Информация по загрузке: