Линеаризуемость не так проста, как кажется

Разработка

Тезисы

Из доклада узнаем, как из одной ячейки памяти на ненадёжной сети построить отказоустойчивое хранилище, которое скрывает сбои от клиента и даёт гарантию линеаризуемости. Научимся отличать спецификацию регистра от модели согласованности, видеть, где в наивной репликации прячется аномалия чтения, и осознанно выбирать кворумы под свои требования (скорость против числа отказов). Это даст язык — чтобы рассуждать о гарантиях реальных систем, таких как Cassandra, ScyllaDB, Spanner и YDB, и понимать, за что именно мы платим, ослабляя согласованность.

Реплицировать данные кажется простой задачей: разошлём на три узла и будем ждать ответов. Но стоит добавить отказы, асинхронную сеть и недоверие к часам, и выясняется, что наивный алгоритм нарушает линеаризуемость, — клиент видит то новое, то старое значение, а попытка просто добавить реплику ломает корректность. Разберёмся, как репликация одного регистра обобщает синхронизацию памяти в процессоре на распределённый случай и как кворумы превращают ненадёжные узлы в атомарный регистр.


Аудитория

Бэкенд-разработчик


Уровень сложности

Экспертный

Точка Банк
Илья Солтанов

Любит работать с распределёнными системами, разбирать white papers, копаться в деталях реализации различных решений и инструментов.

Мечтает стать лектором МФТИ и пасти гусей.

Другие спикеры трека Разработка