Организация конкурентного доступа (HackLoad.kz)
Образовательная лекция в рамках хакатона: https://hackload.kz. Лектор – Дмитрий Мельник (https://drim.dev) Научимся решать главную проблему билетных сервисов — как избежать «двойной продажи» одного и того же места. Изучим на практике разные виды конкурентности (оптимистичная и пессимистичная на уровне БД и на уровне приложения) и использование очередей для надежной обработки заказов. Организация конкурентного доступа (HackLoad.kz) 00:00 Введение 00:41 Представление спикера 01:41 Спонсоры хакатона 03:06 Структура лекции 04:07 Описание приложения 05:59 Операции в приложении 08:52 Проблемы конкурентного доступа 12:25 Проблема Lost update 13:51 Применение к билетному сервису 14:48 Решение проблемы 15:41 Введение в проблему и возможные решения 16:40 Версионность и исключения 17:01 Синхронизация в одном приложении 18:10 Пример проблемы «lost update» 20:25 Принцип работы мьютексов 22:27 Недостатки мьютексов 23:17 Синхронизация нескольких процессов на одном сервере 24:24 Именованные мьютексы 27:04 Распределённые логи 28:39 Рекомендации по литературе 29:26 Кластеризация кворрума 29:58 Консенсус и протоколы 31:50 Протоколы консенсуса 33:19 Проблема Lost Update 34:08 SELECT FOR UPDATE 44:55 Сравнение SELECT FOR UPDATE и SERIALIZABLE 45:45 Проблемы последовательных операций 47:06 Введение в версионирование строк 49:06 Пример работы версионирования 52:20 Обработка ошибок и ретрай 54:36 Применение версионирования в фреймворках 56:39 Оптимистичный и пессимистичный подходы 58:05 Обработка ситуаций с нулевыми апдейтами 59:05 Реализация ретрая в коде 01:00:25 Стратегии ретраев 01:01:26 Работа с версиями данных 01:03:23 Применение версий в бронировании билетов 01:03:57 Простые варианты работы с данными 01:04:40 Оптимистичный и пессимистичный подходы 01:05:33 Уровни изоляции транзакций 01:07:00 Работа с транзакциями в антифреймворке 01:08:11 Пример в SQL Server 01:10:34 Механизм предотвращения конкурентных обновлений 01:12:16 Обработка ошибок в коде 01:13:05 Введение в проблему Lost Update 01:14:27 Анализ ситуации с транзакциями 01:15:31 Важность учёта уровня изоляции 01:15:53 Обсуждение дополнительных операций 01:19:00 Примеры решения проблемы 01:21:09 Механизм MVCC в PostgreSQL 01:23:37 Сравнение подходов PostgreSQL и MS SQL 01:25:14 Заключение
Название:
Организация конкурентного доступа (HackLoad.kz)
Категория:
Разное