open atlas
↑ К треку
Основы System Design SD · 04 · 05

Распределение данных: выбор из вариантов

Синтез по всему юниту распределения данных в формате выбора: лаг репликации и потерянные записи, стратегии партиционирования и горячий шард, consistent hashing против mod-N и выбор CAP/PACELC по кейсу.

SD Senior ◷ 13 min
Уровень
ОсновыJuniorMiddleSenior

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

Подтверди, что умеешь проследить потерянную запись сквозь async-failover, диагностировать горячий шард по ключу партиционирования, выбрать consistent hashing вместо mod-N, посчитать пересечение кворума и поместить нагрузку на спектр консистентности с прямым пониманием CAP и PACELC.

Викторина

Async-реплицируемая база подтверждает записи #51–53 клиентам, затем лидер падает, отправив лишь до #50. Повышается фолловер на #50. Какое описание верно?

Викторина

Ты шардируешь пользователей по user_id, ровно по числу. Один шард встаёт на 100% CPU, пока остальные дремлют, сразу после того, как аккаунт знаменитости стал вирусным. Что происходит и чистейшая мера?

Викторина

Флот кеша Redis маршрутизирует ключи через hash(key) mod N. Добавление одного узла (N: 16 → 17) рушит hit rate почти до нуля. Какая починка и почему она работает?

Викторина

В leaderless-хранилище N = 5 реплик. Ты хочешь, чтобы чтение гарантированно видело последнюю подтверждённую запись. Какая пара (W, R) даёт это с наибольшей доступностью записи?

Викторина

Коллега говорит «мы на Cassandra, значит мы AP — отдали консистентность». Используя CAP и PACELC точно, какая поправка точнее всего?

Викторина

Ты выбираешь уровень консистентности на тип данных для одного продукта. Какое назначение отражает принцип юнита «выбирай по кейсу»?

Вспомните перед уходом
  1. 01
    Почему async-реплицируемый failover теряет подтверждённые записи и что это предотвращает?
  2. 02
    Дай минимальный кворум для гарантированно свежего чтения при N = 5 и наибольшей доступности записи.
Итог

Сквозная мысль — распределять данные значит серией решений выбирать, какое расхождение терпеть. Репликация копирует данные ради чтений и выживания, но async-репликация подтверждает до долговечности, так что failover может потерять подтверждённые записи — держи синхронную реплику. Шардинг дробит данные по ключу, и ровное число ключей всё равно даёт горячий шард при перекосе (знаменитость), что чинится разбивкой, кешированием или изоляцией горячего ключа. Consistent hashing маршрутизирует ключи по кольцу, так что добавление узла двигает лишь ~1/N, тогда как hash mod N переотобразил бы почти все и снёс бы кеш. Leaderless-кворум гарантирует свежее чтение, когда R + W > N (множества чтения и записи пересекаются). А CAP — лишь выбор C-против-A во время партиции, тогда как PACELC добавляет повседневный компромисс задержка-против-консистентности — так что выбирай по кейсу: линеаризуемая для денег и склада, eventual для счётчиков лайков и лент, read-your-writes для собственных правок пользователя.

Что-то непонятно?

Задай вопрос по этому уроку. Вопросы анонимны и попадают напрямую автору — урок станет лучше.

хоткеи развернуть
поиск
K
пред. пьеса
k
след. пьеса
j
тиры
t
это меню
?
sources3
expand
  1. 01
  2. 02
  3. 03

Trademarks belong to their respective owners. Editorial reference only.