Является ли теорема CAP красной селедкой? - PullRequest
2 голосов
/ 01 ноября 2011

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

Я думаю, что это неправильно по следующим причинам:

  • Интернет-маршрутизация удивительно надежна.
  • Теорема CAP применима только к сетевым разделам, где две группы работающих машин не могут общаться.
  • Почти все реальные сетевые разделы состоят из катастрофических сбоев или случаев, когда один из разделов очень мал, а другой очень велик, а маленький можно просто отключить.
  • Сбои машины сами по себе не являются сетевым разделом.

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

Исправление? Комментарии? Flames?


Ссылка:

Ответы [ 2 ]

7 голосов
/ 01 ноября 2011

Теорема CAP была доказана Нэнси Линч и соавт.в лабораториях MIT.

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

В другом случае вы можете иметь доступность и частичную допустимость, но не согласованность, например MongoDB или Cassandra (с настроенной конечной согласованностью).В этом случае у вас может быть несколько серверов БД, но ваши данные не будут доступны сразу на всех серверах.Вы страдаете от согласованности, но вы получаете с доступностью и частичным допуском.

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

В отношении ваших баллов:

  • Интернет-маршрутизация удивительно надежна.

Плавнонадежный.

  • Теорема CAP применяется только к сетевым разделам, где две группы активных машин не могут обмениваться данными.

Теорема CAP применяется клюбая распределенная система.

Другие два пункта на самом деле не имеют особого смысла.

Есть некоторые другие профессора, которые утверждают, что CAP является неполным, и что есть еще что-то, например:задержка.Но теорема CAP имеет смысл.

Существует также теорема "BASE" (в основном доступная, мягкое состояние и конечная согласованность).Многие базы данных NoSQL поддерживают эту теорему.

Посетите мой блог по теореме CAP и NoSQL .

0 голосов
/ 13 ноября 2017

Я рекомендую вам прочитать этот документ: Conjeture Brewer и возможность создания согласованных, доступных, допускающих разбиение на разделы веб-служб.pdf

После прочтения я понял две вещи.

Во-первых, гипотеза Брюера касается любых веб-сервисов, а не только их распространяемых. Тогда в этом контексте имеет смысл выбрать два из трех свойств. Например, давайте проигнорируем допуск раздела. С моей точки зрения, в этом случае у вас есть 2 варианта:

  1. Используйте одну машину: Тогда нет сети, тогда я не буду беспокоиться о допуске на разделы, но доступность всей системы зависит от того, что одна машина должна быть в сети.
  2. Используйте несколько машин, но без репликации: Просто используйте каждую машину для обработки / хранения данных, которые не имеют прочных функциональных связей. Если какой-либо компьютер выходит из строя, остальные данные доступны и согласованы.

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

Затем, вторая вещь, которая поняла:

В распределенных системах, где мы используем несколько машин для распространения вычислений и хранения данных, устойчивость к разделам является для них интригующим свойством. Мы используем группу компьютеров, как если бы они были одним, чтобы увеличить ресурсы обработки и хранения и доступность для клиентов, а не доступность CAP. Таким образом, способ повысить доступность для клиентов состоит в поддержке терпимого к разделу: внутреннего свойства распределенных систем .

Таким образом, теорема CAP, применяемая к распределенным системам, в большинстве своем говорит следующее: При устойчивости к разделам невозможно гарантировать согласованность и доступность одновременно.

...