Ты используешь CAP-теорему НЕПРАВИЛЬНО! System design интервью

  Рет қаралды 2,473

Андрей Суховицкий

Андрей Суховицкий

11 ай бұрын

Ты используешь CAP-теорему НЕПРАВИЛЬНО! System design интервью
ССЫЛКА НА КУРС:
it-es-course.getcourse.ru/main По промокоду ESCOURSE дополнительная скидка 10% до 7 сентября!
Ссылки на статьи и полезные ресурсы:
1. Brewer’s Conjecture and the Feasibility of Consistent, Available, Partition-Tolerant Web Services. Seth Gilbert, Nancy Lynch disk.yandex.ru/i/Tnv_ayuDPsYQEg
2. Типы консистентности/согласованности - jepsen.io/consistency
3. Мартин Клеппман про CAP - martin.kleppmann.com/2015/05/...
4. Linearizability: A Correctness Condition for Concurrent Objects. MAURICE P. HERLIHY, JEANNETTE M. WING - cs.brown.edu/~mph/HerlihyW90/...
Автор курса: Андрей Суховицкий
Действующий разработчик ПО, работает над проектированием и разработкой высоконагруженных систем.
Последние 4 года создаю и провожу авторские курсы по микросервисной архитектуре, проектированию производительных систем и проектированию ПО в университете ИТМО и МФТИ.
В 2021 году получил награду как лучший преподаватель ИТМО.

Пікірлер: 10
@Denis-sds
@Denis-sds Ай бұрын
СОМНИТЕЛЬНО, но окэй
@tsc472
@tsc472 16 күн бұрын
Когда-то разбирался с этим вопросом, понял эту теорему совсем по-другому: 1) partitioning tolerance - это свойство переживать разрыв сети. Разрыв сети - это когда все узлы работают, но между ними возник split brain, который потом полечился. Да, сеть имеет свойство пропадать, поэтому распрелеленные системы не способные пережить разрыв сети нам не интересны. 2) availability - это способность сохранять работоспособность пока работает хотя бы один узел 3) consistency - это когда система возвращает одинаковый ответ на одинаковый запрос, независимо от узла, к которому обращаются. И раз P нужна всегда, то речь может идти о CP системах и AP системах. CP - это когда запись в одну ноду сразу дублируется во все ноды. Она не может быть available, т. к. если часть нод временно не ответит, то система должна прекратить обслуживать запросы (иначе с неответившей ноды могут прилететь неконсистентные данные) AP - это большая часть nosql субд: система будет отвечать "до последнего", но иногда данные могут быть устаревшими т. к. мы не синхронизируемся в момент записи и допускаем чтение когда часть нод лежит. На самом деле CA систему тоже можно представить: это зеркало их 2-х реляционных субд с двумя мастерами и синхронной репликацией. Все будет консистентно, умершая нода потом сможет накатить лог транзакций с живой и восстановиться, но вот split brain (когда ноды потеряли связь и продолжили работать не зная что вторая нода жива и тоже что-то пишет) эта схема не переживет.
@sukhoa
@sukhoa 16 күн бұрын
Split brain это как раз таки не описание состояния partitioning tolerance, а описание partitioning tolerance и точно неконсистентных систем. Если кластер, скажем, поделился на две части и при этом смог выбрать лидера с обеих сторон и решить, что теперь он будет работать, как два независимых кластера. Availability - это не просто способность сохранять работоспособность пока работает хотя бы один узел, а обслуживать любые запросы на любой из нод кластера. Суть в том, что большинство статей описывают вообще не CAP теорему, а просто "в какую стороную больше склоняется система", быть доступной или быть консистентной в присутствии разрыва сети. Я прикладывал в описании конкретные работы, где вводилось понятие CAP теоремы, это академические работы, можете ознакомиться с ними, как с первоисточником.
@sukhoa
@sukhoa 11 ай бұрын
Ссылка на мой курс по Event driven и Event sourcing: it-es-course.getcourse.ru/main
@YuriySamorodov
@YuriySamorodov 2 ай бұрын
Отличный разбор. Спасибо! А разве репликация и наличие нескольких нод не подразумевает наличия сети, и соответственно, не допускает ее разделения (сегментации)?
@sukhoa
@sukhoa 16 күн бұрын
спасибо) Да, конечно, любая система, где между узлами пролегает сеть является распределенной и, конечно, предполагает ситуация разрыва сети.
@a1dwow
@a1dwow 8 ай бұрын
Андрей, а как вы рисуете, можете подробнее рассказать, у вас открыта программа Sketchbook на Mac, но рисуете как будто на другом устройстве
@sukhoa
@sukhoa 8 ай бұрын
Добрый день! Да, все верно, я рисую в Sketchbook, но на графическом планшете
@manOfPlanetEarth
@manOfPlanetEarth 5 ай бұрын
@@sukhoa графический планшет? айпад что ли?
@user-zs3ur4gr3h
@user-zs3ur4gr3h 11 ай бұрын
Видос классный, но комент в конце мне кажется лишним. Хотя может я просто душный
Каха ограбил банк
01:00
К-Media
Рет қаралды 9 МЛН
TRY NOT TO LAUGH 😂
00:56
Feinxy
Рет қаралды 21 МЛН
Must-have gadget for every toilet! 🤩 #gadget
00:27
GiGaZoom
Рет қаралды 10 МЛН
korean convenience store MUKBANG🍜🇰🇷🏪
0:51
amaneあまね
Рет қаралды 118 М.
SETELAH KEPERGIANMU PART 3 - Animasi Sekolah
5:36
Dhot Design
Рет қаралды 4,8 МЛН
Consistent hashing, Rendezvous hashing | Вопросы собеседований
48:08
Андрей Суховицкий
Рет қаралды 1,2 М.
Прокачай пул потоков в Java😎 #shorts
1:00
Андрей Суховицкий
Рет қаралды 622
CAP-теорема для чайников
10:21
Artemy
Рет қаралды 951