2014-10-08 3 views
0

Я читал много статей о теореме CAP. Я понимаю, что означает A, C, P, и что мы можем делать, когда у нас возникают проблемы с сетевой связью.как «Доступность» работает в теореме CAP. AP наизнанку

В заключении мы имеем такие случаи:

Если два узла имеет проблемы связи в кластере:

  1. В этот момент, когда возникает проблема, мы можем позволить узлам быть синхронизированы (отказаться от согласованности) или

  2. В этот момент, когда возникает проблема, отключите узлы на некоторое время (откажитесь от доступности - отключите чтение/запись из узлов, где обнаружена проблема связи).

С помощью этого мы имеем такие случаи:

1) CA - если возникает проблема связи, данные из синхронизации, потому что у нас есть «Доступность», и мы не отключать узлы, которые имеют проблемы. Но синхронизация будет запущена, связь будет решена.

2) CP - если возникает проблема связи, узел будет отключен (запись/чтение не может сделать для этого узла)

3) AP - если возникает проблема связи, данные из синхронизации тоже. Но из-за того, что у нас нет C, у нас нет гарантии, что данные будут такими же после синхронизации.

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

+1

Это своего рода широкий вопрос, потому что это зависит от реализации. Например, Кассандра использует [прочитать ремонт] (http://wiki.apache.org/cassandra/ReadRepair). Брюер также говорил о выздоровлении вообще [здесь] (http://www.infoq.com/articles/cap-twelve-years-later-how-the-rules-have-changed) (см. «Восстановление раздела» и далее) – LMeyer

+0

На данный момент существует ли какая-либо БД, у которой есть CP и AP тоже? – grep

+0

См. Мой андерс на другом [вопрос] (http://stackoverflow.com/questions/16779348/does-the-cap-theorem-imply-that-acid-is-not-possible-for-distributed-databases/16779594# 16779594). Тем не менее, некоторые скажут Google Spanner, но мы не Google, поэтому ... – LMeyer

ответ

0

AP в основном означает, что система будет продолжайте получать обновления. Предположим, что обновления отправляются на сервер S1, который разбит на сервер S2. S1 сможет обслуживать новые значения, но S2 все равно будет показывать устаревшие значения. Несмотря на то, что теорема CAP не говорит о конвергенции после исчезновения раздела, существует множество способов создания системного сетевого раздела. Мы можем использовать CRDT (Conflict Free Replicated DataTypes), или мы также можем использовать Компенсирующие транзакции. Эрик Брюэр написал об этом в следующей статье - CAP 12 Years

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