2015-06-21 5 views
1

Мои понимание из CAP аббревиатуры выглядит следующим образом:Почему системы CP не могут быть CAP?

  • C onsistent: каждое чтение получает самого последней запись
  • модели шириной: каждый узел доступен
  • P artion Tolerant: система может продолжать поддерживать A и C обещает, когда сетевое соединение между узлами опускается

Предполагая, что мое понимание более или менее на ходу, тогда меня что-то беспокоит.

AFAIK, доступность достигается с помощью любого из следующих методов:

  • балансировки нагрузки
  • репликации в системе аварийного восстановления

Так что, если у меня есть система, что я уже знаю CP, почему я не могу «сделать это полностью CAP», применяя один из этих методов, чтобы сделать его доступным? Я уверен, что у меня что-то не хватает, просто не знаю, что.

+0

Ваше понимание «доступного» неверно. Дело не в том, что каждый узел доступен; это то, что услуга доступна. Доступ к сервису возможен, даже если отдельные узлы не работают; это одна из причин, по которым мы используем избыточность. –

ответ

3

Это толерантность к разделу, что вы ошибаетесь.

До тех пор, пока не происходит какого-либо перегородки, системы могут быть последовательными и доступными. Существуют системы ЦС, которые говорят, что нам не нужны разделы. Вы можете заставить их работать внутри стойки с серверным оборудованием и сделать разбиение на разделы крайне маловероятным. Проблема в том, что, если разделы происходят?

Система может либо выбрать

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

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

Вот 2 большие сообщения, которые должны четко:

  • You Can’t Sacrifice Partition Tolerance показывает идею, что каждый действительно распределенная система должна иметь дело с разбиением сейчас и чем и, следовательно, системы CA сломается сразу на первом появление раздела
  • CAP Twelve Years Later: How the "Rules" Have Changed немного более современные и показывает теорему CAP более гибкой, где разработчики могут выбирать, как приложения ведут себя во время разделения и могут пожертвовать немного консистенции, чтобы получить некоторую доступность, ...

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

 Смежные вопросы

  • Нет связанных вопросов^_^