Теорема CAP - Доступность и Толерантность раздела

Пока я пытаюсь понять "Доступность" (A) и "Толерантность к разделам" (P) в CAP, мне было трудно понять объяснения из разных статей.

Мне кажется, что A и P могут идти вместе (я знаю, что это не так, и почему я не понимаю!).

Объясняя в простых терминах, что такое A и P и разница между ними?

Ответ 1

Согласованность означает, что данные одинаковы во всем кластере, поэтому вы можете читать или записывать данные с любого узла и получать из него одинаковые данные.

Доступность означает возможность доступа к кластеру, даже если узел в кластере выходит из строя.

Допуск раздела означает, что кластер продолжает функционировать, даже если существует "разделение" (обрыв связи) между двумя узлами (оба узла работают, но не могут обмениваться данными).

Чтобы получить доступность и допуск раздела, вы должны отказаться от согласованности. Подумайте, есть ли у вас два узла, X и Y, в настройке мастер-мастер. Теперь между сетями X и Y есть разрыв, поэтому они не могут синхронизировать обновления. На данный момент вы можете:

A) Разрешить узлам выходить из синхронизации (отказ от согласованности), или

Б) Считать кластер "выключенным" (отказавшись от доступности).

Все доступные комбинации:

  • CA - данные согласованы между всеми узлами - до тех пор, пока все узлы подключены к сети - и вы можете читать/записывать с любого узла и быть уверенным, что данные одинаковы, но если вы когда-нибудь создадите разделение между узлами, данные будут несинхронизировано (и не будет повторно синхронизироваться после разрешения раздела).
  • CP - данные согласованы между всеми узлами и поддерживают допуск раздела (предотвращая рассинхронизацию данных), становясь недоступными при выходе из строя узла.
  • AP - узлы остаются подключенными, даже если они не могут взаимодействовать друг с другом, и будут повторно синхронизировать данные после разрешения раздела, но вы не гарантированы, что все узлы будут иметь одинаковые данные (во время или после раздела)

Следует отметить, что системы CA практически не существуют (даже если некоторые системы утверждают, что таковыми являются).

Ответ 2

Учитывая P в равных терминах с C и A, это немного ошибка, а понятие "2 из 3" среди C, A, P вводит в заблуждение. Каким-то образом я бы объяснил теорему CAP: "В распределенном хранилище данных во время сетевого раздела вы должны выбрать либо" Согласованность ", либо" Доступность "и не можете получить оба". Новые системы NoSQL пытаются сосредоточиться на доступности, в то время как традиционные базы данных ACID уделяют больше внимания согласованности.

Вы действительно не можете выбрать CA, сетевой раздел - это не то, что кто-то хотел бы иметь, это просто нежелательная реальность распределенной системы, сети могут потерпеть неудачу. Вопрос в том, какой компромисс вы выберете для своего приложения, когда это произойдет. Этот article от человека, который впервые сформулировал этот термин, как представляется, объясняет это очень четко.

Ответ 3

Вот как я обсуждаю CAP, особенно в отношении P.

CA возможно только в том случае, если вы в порядке с монолитной односерверной базой данных (возможно, с репликацией, но все данные на одном "блоке отказов" - серверы не считаются частично отказавшими). ​​

Если ваша проблема требует масштабирования, распределения и многосервера --- могут произойти сетевые разделы. Вы уже требуете P. Многие проблемы, с которыми я подхожу, поддаются однопараметровым парадигмам (или, как сказал Стоунбрейкер, "распределены в столах" ). Если вы можете найти проблему с ЦС, решения, такие как традиционная не-масштабируемая РСУБД, принесут много преимуществ.

Для меня редко: поэтому мы переходим к обсуждению AP против CP.

Вы можете выбирать только между AP и CP, когда у вас есть раздел. Если сеть и оборудование работают правильно, вы получаете свой торт и едите его тоже.

Позвольте обсудить различие AP/CP.

AP - когда есть сетевой раздел, пусть независимые части работают свободно.

CP - когда есть сетевой раздел, отключает узлы или запрещает чтение и запись, поэтому есть детерминированные сбои.

Мне нравятся архитектуры, которые могут делать оба, потому что некоторые проблемы - это AP, а некоторые - CP, и некоторые базы данных могут делать оба. Среди решений CP и AP есть также тонкости.

Например, в наборе данных AP у вас есть возможность как несогласованных чтений, так и генерации конфликтов записи - это два разных возможных режима AP. Может ли ваша система быть настроена для AP с высокой доступностью чтения, но запрещает конфликты записи? Или ваша система AP может принимать конфликты записи с сильной и гибкой системой разрешения? Нужно ли вам обоим в конце концов, или вы можете выбрать систему, которая только делает?

В системе CP, насколько недоступны вы с небольшими разделами (один сервер), если таковые имеются? Большая репликация может увеличить недоступность в системе CP, как система обрабатывает эти компромиссы?

Это все вопросы, которые нужно задать для CP и AP.

Отличное чтение в этой области прямо сейчас - пивовар "12 лет спустя". Я считаю, что это решительно продвигает обсуждение CAP и настоятельно рекомендует его.

http://www.infoq.com/articles/cap-twelve-years-later-how-the-rules-have-changed

Ответ 4

Теорема CAP

Консистенция:

Чтение гарантируется возвращать самую последнюю запись (например, ACID) для данного клиента. Если любой запрос приходит в течение этого времени, его нужно ждать, пока синхронизация данных завершится в/в node (s).


Доступность:

каждый node (если не сбой) всегда выполняет запросы и всегда должен отвечать на запросы. Не имеет значения, вернет ли он последнюю копию или нет.


Partition-допуск:

Система будет продолжать функционировать при возникновении сетевых разделов.


Что касается AP, доступность (всегда доступная) может существовать с (Cassendra) или без ( RDBMS) допуск к разделению

источник pic

Ответ 5

Согласованность. Когда мы отправляем запрос на чтение, если он возвращает результат, он должен возвращать самую последнюю запись, заданную клиентом. Доступность. Ваш запрос на чтение/запись всегда должен быть успешным. Допуск разделов. Когда возникает сетевой раздел (проблема для некоторых машин для общения друг с другом), система все равно должна работать.

В распределенной среде есть вероятность, что произойдет разделение сети, и мы не сможем избежать "P" CAP. Поэтому мы выбираем между "Согласованностью" и "Доступностью".

http://bigdatadose.com/understanding-cap-theorem/

Ответ 6

В простой теореме CAP говорится, что распределенной системе невозможно одновременно предоставить все три гарантии:

enter image description here

консистенция

Каждый узел содержит одни и те же данные одновременно

Доступность

По крайней мере, один узел должен быть доступен для обслуживания данных каждый раз

Допуск раздела

Отказ системы очень редко

В большинстве случаев каждая система может гарантировать только две функции: CA, AP или CP.

Ответ 8

Я чувствую, что толерантность к разделам плохо объясняется ни в одном из ответов, поэтому просто объяснить вещи более подробно теорема CAP означает:

C: (Линеаризуемость или сильная согласованность) примерно означает

Если операция B началась после успешного завершения операции A, то операция B должна видеть систему в том же состоянии, в котором она находилась при завершении операции A, или в более новом состоянии (но никогда не в старом состоянии).

A:

"каждый запрос, полученный не исправным узлом [базы данных] в системе, должен приводить к ответу [без ошибок]". Недостаточно, чтобы какой-то узел мог обработать запрос: любой исправный узел должен быть в состоянии обработать его. Многие так называемые "высокодоступные" (то есть с низким временем простоя) системы фактически не соответствуют этому определению доступности.

P:

Допуск раздела (ужасно ошибочно названный) в основном означает, что вы общаетесь по асинхронной сети, которая может задерживать или отбрасывать сообщения. Интернет и все наши дата-центры обладают этим свойством, поэтому у вас нет выбора в этом вопросе.

Источник: Потрясающая работа Мартина Клеппмана

Просто для примера: Кассандра может быть в максимальной степени AP-системой. Но если вы сконфигурируете его для чтения или записи на основе кворума, то он не останется доступным CAP (доступным в соответствии с определением теоремы CAP) и будет только P-системой.

Ответ 9

Простой способ понять теорему CAP:

В случае сетевого раздела нужно выбирать между совершенным доступность и идеальная согласованность.

Согласованность выбора означает невозможность ответить на запрос клиента как система не может гарантировать возврат самой последней записи. Этот жертвует доступностью.

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

Это объяснение из этой превосходной статьи. Надеюсь, это поможет.