2014-10-08 13 views
0

나는 CAP 정리에 관한 많은 기사를 읽었습니다. 나는 A, C, P가 의미하는 바를 이해하고, 네트워크 통신 문제가있을 때 우리가 무엇을 할 수 있는지 이해합니다."가용성"이 CAP 정리에서 어떻게 작동하는지. AP inside inside

결론적으로

우리가 그러한 경우가 있습니다

두 개의 노드가 클러스터의 통신 문제가있는 경우 : 지금이 순간

  1. , 문제가 발생하면, 우리는 (노드가 동기화 될 수 있도록 할 수 있습니다 일관성 포기) 또는

  2. 이 순간에 문제가 발생하면 잠시 동안 노드를 비활성화하십시오 (가용성을 포기 - 통신 문제가 감지 된 노드에서 읽기/쓰기를 비활성화). 이 사용

우리는 이러한 경우가 있습니다

1) CA - 통신 문제가 발생하는 경우 우리는 "가용성"을 가지고 우리가 문제가있는 노드를 해제하지 않기 때문에, 데이터가 동기화되지. 그러나 동기화가 시작되어 통신이 해결됩니다.

2) CP - 통신 장해가 발생한 경우, 노드는 중지 할 것이다 (읽기/쓰기)이이 노드에

3) AP가 이루어 질수 - 통신 장해가 발생하면, 데이터는 또한 동기화된다. 하지만 C가 없으므로 동기화 후 데이터가 동일하게 유지된다는 보장이 없습니다.

AP가 분명하지 않아서, 동기화 후 데이터가 동일하게 보장되지 않는 이유는 무엇입니까? 나는 CAP 이론이 우리에게 이것을 알려주고 C를 가지고 있지 않기 때문에 이것을 알 수 있습니다. 그러나 이것은 충분하지 않습니다. 이것은 기술적으로 실제로 일어나는 일을 우리에게 알려주지 않습니다 ...

+1

이것은 구현에 달려 있기 때문에 광범위한 질문입니다. 카산드라는 예를 들어 [read repair] (http://wiki.apache.org/cassandra/ReadRepair)를 사용합니다. 브루어 (Brewer)는 또한 전반적인 복구에 대해서도 이야기했다. (http://www.infoq.com/articles/cap-twelve-years-later-how-the-rules-have-changed) ("파티션 복구"참조) – LMeyer

+0

현재 CP와 AP가있는 DB가 있습니까? – grep

+0

내 anwser 다른 [질문] 참조 (http://stackoverflow.com/questions/16779348/does-the-cap-theorem-imply-that-acid-is-not-possible-for-distributed-databases/16779594# 16779594). 그러나 일부는 구글 스패너라고하지만 우리는 구글이 아니기 때문에 ... – LMeyer

답변

0

AP는 기본적으로 시스템이 계속 업데이 트를 복용. 서버 S2에서 분할 된 서버 S1로 업데이트가 전송된다고 가정 해 봅니다. S1은 새 값을 제공 할 수 있지만 S2는 여전히 부실 값을 표시합니다. CAP 정리는 파티션이 없어지면 컨버전스에 대해 말하지 않지만 시스템 파티션 네트워크 파티션을 구축하는 방법은 많이 있습니다. CRDT (Conflict Free Replicated DataTypes)를 사용할 수도 있고 Compensating Transactions를 사용할 수도 있습니다. Eric Brewer가 다음 글에서이 글을 작성했습니다 - CAP 12 Years