EN
Юра
Юра
3 subscribers
goals
0 of 100 paid subscribers
Когда я наберу 100 подписчиков я смогу больше времени уделять контенту!

CAP теорема для маленьких и тупых

CAP теорема, она же теорема Брюера - одна из фундаментальных концепцией в распределенных системах. Эта концепция часто используется для проектирования распределенных баз данных. Давайте разберемся что это такое и с чем это едят.
CAP theorem гласит: в распределенной системе невозможно одновременно достичь всех трех следующих свойств:
1) C (consistency) — согласованность. Каждое чтение даст вам самую последнюю запись или ошибку.
2) A (availability) — доступность. Каждый не упавший узел всегда успешно отвечает на все операции чтения и записи при этом в адекватные сроки.
3) P (partition tolerance) — устойчивость к распределению. Система продолжает даже в случае потери связи между некоторыми узлами.
Короче говоря нельзя достичь всех трех описанных свойств, что-то да пойдет не так. Но почему? Давайте попробуем ответить на этот вопрос.
Запомните, дальше consistency - согласованность, availability - доступность, partition tolerance - устойчивость к распределению.
Противоречия между этими свойствами можно разделить на такие категории:
1) Согласованность и доступность:
- Чтение данных из системы должно всегда возвращать последнее записанное значение, чтобы достичь согласованности. Хотя, для обновления данных в системе требуется время на распространение информации между узлами и это может снизить доступность.
- Изменение данных в одном узле не дает гарантии, что данные будут сразу доступны в других узлах. Это может привести к несогласованности данных и потере доступности при обращении к данным. (проблема доступности)
2) Согласованность и устойчивость к разделению:
- Для достижения согласованности данных, все узлы должны иметь одинаковое представление о данных. Однако, в случае разделения системы на несколько частей, возможно появление различных версий данных в разных частях системы, что может привести к несогласованности данных. (проблема несогласованности)
- Для решения проблемы согласованности данных при разделении системы, требуется использование механизмов репликации данных и механизмов согласования изменений данных, что опять же может привести к проблеме и доступности и устойчивости к разделению.
3) Доступность и устойчивость к разделению:
- Для достижения высокой доступности, система должна иметь резервный узел, который может обработать запросы в случае отказа основного узла. Однако, при разделении системы на несколько частей, запасной узел может не иметь полного доступа к данным, что может привести к снижению доступности.
- Для решения проблемы доступности при разделении системы, требуется использование механизмов репликации данных и механизмов выбора запасного узла для обработки запросов.
Итак, противоречия между свойствами согласованности, доступности и устойчивости к разделению происходят из-за ограничений в распределенных системах, связанных с временем и сетевой коммуникацией. При разработке распределенных систем необходимо выбирать наиболее подходящую комбинацию свойств, учитывая требования приложения и вашей инфраструктуры

Subscription levels

$
No subscription levels
Go up