CAP 정리 - 가용성 및 파티션 공차
CAP의 "Availability"(A)와 "Partition transportance"(P)를 이해하려고 노력하는 동안, 여러 기사의 설명을 이해하기가 어려웠습니다.
A와 P가 같이 갈 수 있다는 느낌이 들어요.(그렇지 않다는 것을 알고, 그래서 이해하지 못합니다!).)
간단히 설명하자면, A와 P는 무엇이고 그들 사이의 차이점은 무엇입니까?
일관성이란 데이터가 클러스터 전체에서 동일하므로 모든 노드에서 읽거나 쓸 수 있고 동일한 데이터를 얻을 수 있습니다.
가용성은 클러스터의 노드가 다운되더라도 클러스터에 액세스할 수 있는 기능을 의미합니다.
파티션 허용오차는 두 노드 사이에 "파티션"(통신 중단)이 있더라도(두 노드가 모두 작동하지만 통신할 수 없음) 클러스터가 계속 작동한다는 것을 의미합니다.
가용성과 파티션 허용오차를 모두 확보하려면 일관성을 포기해야 합니다.마스터 마스터 설정에 두 노드 X와 Y가 있는 경우를 고려합니다.이제 X와 Y 사이에 네트워크 통신이 끊겨서 업데이트를 동기화할 수 없습니다.이 시점에서 다음 중 하나를 수행할 수 있습니다.
A) 노드가 동기화되지 않도록 허용(일관성 포기) 또는
B) 클러스터가 "중단" 상태(가용성 중단)인 것으로 간주합니다.
사용 가능한 모든 조합은 다음과 같습니다.
- CA - 모든 노드가 온라인 상태인 한 모든 노드 간에 데이터가 일치하며, 모든 노드에서 데이터를 읽고 쓸 수 있으며 데이터가 동일한지 확인할 수 있지만 노드 간에 파티션을 개발하면 데이터가 동기화되지 않습니다(파티션이 해결되면 다시 동기화되지 않음).
- CP - 데이터는 모든 노드 간에 일관되며, 노드가 다운되면 사용할 수 없게 되어 파티션 공차(데이터 비동기화 방지)를 유지합니다.
- AP - 노드가 서로 통신할 수 없는 경우에도 온라인 상태를 유지하고 파티션이 해결되면 데이터를 다시 동기화하지만, 모든 노드가 파티션 도중이나 파티션 후에 동일한 데이터를 갖는 것은 보장되지 않습니다.
CA 시스템은 실제로 존재하지 않습니다(일부 시스템이 존재한다고 주장하더라도).
P를 C, A와 동일한 용어로 생각하는 것은 약간의 실수이지만, 오히려 C,A,P 중 '3개 중 2개' 개념은 오해의 소지가 있습니다.CAP 정리를 간단히 설명하는 방법은 "분산 데이터 저장소에서는 네트워크 분할 시 일관성 또는 가용성 중 하나를 선택해야 하며 둘 다 얻을 수 없습니다."입니다.새로운 NoSQL 시스템은 가용성에 초점을 맞추려고 노력하는 반면, 기존의 ACID 데이터베이스는 일관성에 초점을 맞추었습니다.
CA를 선택할 수 없습니다. 네트워크 파티션은 누구나 원하는 것이 아닙니다. 분산 시스템의 바람직하지 않은 현실일 뿐입니다. 네트워크가 실패할 수 있습니다.문제는 그런 일이 발생할 때 응용 프로그램에 대해 어떤 절충안을 선택하느냐는 것입니다.그 용어를 처음 만든 사람의 이 기사는 이것을 매우 명확하게 설명하는 것 같습니다.
P에 관해서 CAP에 대해 구체적으로 어떻게 논의하고 있는지는 다음과 같습니다.
CA는 단일 단일 서버 데이터베이스(복제는 가능하지만 하나의 "실패 블록"에 있는 모든 데이터(서버는 부분적으로 실패하는 것으로 간주되지 않음)가 정상인 경우에만 가능합니다.
문제로 확장, 분산 및 다중 서버 --- 네트워크 파티션이 발생할 수 있습니다.당신은 이미 P를 요구하고 있습니다.제가 접근하는 몇 가지 문제는 항상 단일 서버 패러다임(또는 Stonebraker가 말했듯이 "분산은 테이블 스테이크"입니다)에 적용할 수 있습니다.CA 문제를 발견할 수 있다면 기존의 스케일아웃 RDBMS와 같은 솔루션은 많은 이점을 제공합니다.
저는 드물게 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
일관성:
읽기는 특정 클라이언트에 대한 가장 최근 쓰기(예: ACID)를 반환하도록 보장됩니다.이 시간 동안 요청이 오면 노드 전체에서/노드에서 데이터 동기화가 완료될 때까지 기다려야 합니다.
가용성:
모든 노드(실패하지 않은 경우)는 항상 쿼리를 실행하고 요청에 항상 응답해야 합니다.최신본을 반납하든 안하든 상관없습니다.
파티션 공차:
네트워크 파티션이 발생해도 시스템은 계속 작동합니다.
AP와 관련하여 가용성(항상 액세스 가능)은 (Cassendra) 또는 (RDBMS) 파티션 허용오차가 없을 수 있음
많은 링크를 거쳤으나 하나를 제외하고는 어느 하나도 만족스러운 답변을 해주지 못했습니다.
그래서 저는 CAP를 아주 간단한 단어로 설명하고 있습니다.
일관성:데이터가 어느 노드에서 오는지에 관계없이 동일한 데이터를 반환해야 합니다.
가용성:노드가 응답해야 합니다(사용 가능해야 함).
파티션 공차:노드 간에 파티션(즉, 네트워크 장애)이 있더라도 클러스터는 응답해야 합니다(사용 가능해야 함).
(또한 이것이 더 혼란스러운 이유 중 하나는 이것에 대한 잘못된 명명 규칙입니다.제가 옳다면 DNC 정리를 대신 제시했을 수도 있습니다. 데이터 일관성, 노드 가용성, 클러스터 가용성(각각 일관성, 가용성 및 파티션 허용오차에 해당)
CP 데이터베이스:CP 데이터베이스는 가용성을 희생시키면서 일관성과 파티션 허용오차를 제공합니다.두 노드 사이에 파티션이 발생하면 파티션이 해결될 때까지 일관되지 않은 노드를 종료해야 합니다(즉, 사용할 수 없도록 설정).
AP 데이터베이스:AP 데이터베이스는 일관성을 희생하면서 가용성과 파티션 허용오차를 제공합니다.파티션이 발생하면 모든 노드가 사용 가능한 상태로 유지되지만 파티션의 잘못된 끝에 있는 노드는 다른 노드보다 이전 버전의 데이터를 반환할 수 있습니다. (파티션이 해결되면 AP 데이터베이스는 일반적으로 노드를 다시 동기화하여 시스템의 모든 불일치를 복구합니다.)
CA 데이터베이스:CA 데이터베이스는 모든 노드에서 일관성과 가용성을 제공합니다.그러나 시스템에 있는 두 노드 사이에 파티션이 있으면 이를 수행할 수 없으므로 Fault Tolerance를 제공할 수 없습니다.분산형 시스템에서는 파티션을 피할 수 없습니다.따라서 이론적으로는 CA 분산 데이터베이스에 대해 논의할 수 있지만 모든 실제적인 목적을 위해 CA 분산 데이터베이스는 존재할 수 있지만 존재해서는 안 됩니다.
따라서 분산 응용프로그램에 대한 CA 데이터베이스가 필요한 경우 이 데이터베이스를 가질 수 없음을 의미하지 않습니다.Postgre와 같은 많은 관계형 데이터베이스SQL은 일관성과 가용성을 제공하며 복제를 사용하여 여러 노드에 구축할 수 있습니다.
출처 : https://www.ibm.com/cloud/learn/cap-theorem
어떤 답변에서도 파티션 공차가 잘 설명되지 않는다고 생각하기 때문에 CAP 정리를 좀 더 자세히 설명하면 다음과 같습니다.
C: (선형화 가능성 또는 강한 일관성) 대략 다음을 의미합니다.
작업 A가 성공적으로 완료된 후 작업 B가 시작된 경우, 작업 B는 작업 A가 완료되었을 때와 동일한 상태이거나 새로운 상태(그러나 이전 상태는 아님)로 시스템이 표시되어야 합니다.
A:
"시스템의 database이 아닌 [failing] 노드가 수신하는 모든 요청은 [오류가 아닌] 응답으로 이어져야 합니다."일부 노드는 요청을 처리하기에 충분하지 않습니다. 장애가 없는 노드는 요청을 처리할 수 있어야 합니다.소위 "가용성이 높은"(즉, 다운타임이 적은) 시스템은 실제로 이러한 가용성 정의를 충족하지 못합니다.
P:
파티션 공차(끔찍하게 잘못된 이름)는 기본적으로 메시지를 지연시키거나 삭제할 수 있는 비동기 네트워크를 통해 통신하고 있음을 의미합니다.인터넷과 당사의 모든 데이터 센터는 이 속성을 가지고 있으므로 이 문제에 대해서는 선택의 여지가 없습니다.
출처 : 멋진 마틴 클렙만의 작품
예를 들어, 카산드라는 최대 AP 시스템이 될 수 있습니다.그러나 쿼럼에 따라 읽거나 쓰도록 구성하면 CAP 사용 가능(CAP 정리의 정의에 따라 사용 가능)은 유지되지 않고 P 시스템만 사용할 수 있습니다.
단순한 CAP 정리에 따르면 분산 시스템이 세 가지 보장을 동시에 제공하는 것은 불가능합니다.
일관성.
모든 노드가 동시에 동일한 데이터를 포함합니다.
유용성
매번 데이터를 제공하려면 노드를 하나 이상 사용할 수 있어야 합니다.
파티션 공차
시스템의 고장은 매우 드문 일입니다.
대부분의 시스템은 CA, AP 또는 CP 중 최소 두 가지 기능만 보장할 수 있습니다.
CAP 정리를 이해하는 간단한 방법:
네트워크 파티션의 경우 완벽한 가용성과 일관성 중 하나를 선택해야 합니다.
일관성을 선택한다는 것은 시스템이 최신 쓰기를 반환하는 것을 보장할 수 없기 때문에 클라이언트의 쿼리에 응답할 수 없음을 의미합니다.이로 인해 가용성이 저하됩니다.
가용성을 선택한다는 것은 고객의 요청에 응답할 수 있다는 것을 의미하지만 시스템은 일관성, 즉 가장 최근에 작성된 값을 보장할 수 없습니다.사용 가능한 시스템은 주어진 상황에서 가능한 최선의 답을 제공합니다.
이 설명은 이 훌륭한 기사에서 나온 것입니다.도움이 되길 바랍니다.
위의 다이어그램에 따르면 C는 연결이 끊어졌지만 A,B,D는 작업을 계속할 수 있습니다.이제 시스템이 부분적으로 작동하고 있다고 할 수 있습니다(Partition Tolerance).
특정 트랜잭션은 A,B,D 시스템만 있으면 불일치 없이 수행할 수 있다고 생각합니다.
그러나 C가 특정 거래에 관여해야 할 때 시스템은 두 가지 방식으로 수행할 수 있습니다.
1.C가 사용할 수 없기 때문에 A는 사용자 요청을 거절할 수 있습니다.
So the system has Partition-Tolerance and consistency (P,C).
But no availability, because of the rejection.
2.A는 C가 수신해야 할 메시지를 A의 로컬 메모리에 저장하고 C가 다시 연결되면 전송할 수 있습니다.
So the system has Partition-Tolerance and availability (P,A).
But no consistency.because C has not updated.
Brewer의 기조, Gilbert paper 및 다른 많은 치료법은 C, A 및 P를 구현의 바람직한 속성으로 동등한 위치에 두고 효과적으로 '둘 중 하나를 선택하라!'라고 말합니다.그러나 빌드할 수 없거나 선택할 수 없기 때문에 잘못된 프레젠테이션으로 간주되는 경우가 많습니다. - '파티션 허용 오차': 시스템에서 파티션이 발생하거나 발생하지 않을 수 있습니다.
CAP는 파티션이 발생할 수 있는 시스템을 구축할 때 발생해야 하는 절충점을 설명하는 것으로 더 잘 이해됩니다.실제로는 이것이 모든 분산 시스템입니다. 100% 신뢰할 수 있는 네트워크는 없습니다.그래서 (적어도 분산된 맥락에서는) 현실적인 CA 시스템이 없습니다.파티션 문제가 발생할 가능성이 있으므로 C 또는 A를 어느 시점에 타협해야 합니다.
여기에 언급된 ATM 예를 들어 상세히 설명하겠습니다.
CAP 정리는 분산 시스템에서 파티션이 발생할 경우 일관성과 가용성 간의 균형에 대해 설명합니다.하며,partition
그 노드들 사이의 연결이 어떻게든 끊어졌다는 뜻입니다.
파티션은 분산 시스템 내의 통신 중단으로, 두 노드 간의 연결이 끊겼거나 일시적으로 지연됩니다.파티션 허용 오차는 시스템의 노드 간 통신 장애가 여러 번 발생하더라도 클러스터가 계속 작동해야 함을 의미합니다.
우리가 작은 은행을 가지고 있고 현금자동입출금기가 2대밖에 없다고 생각해보세요. 고객들은 입출금과 잔액조회를 할 수 있습니다.균형이 절대로 영하로 떨어지지 않도록 해야 합니다.ATM 간의 연결은 3가지 방법으로 끊어질 수 있습니다.
1- 고객님께서 사용하셔야 하는 ATM기가 작동하지 않습니다.당신은 단지 고장난 표지판을 붙여 놓았을 뿐입니다.
2- 사용하실 ATM기는 작동하고 다른 ATM기는 작동하지 않습니다.
3- 둘 다 일을 하고 있는데 네트워크 문제가 생겨서 서로 의사소통이 되지 않습니다.
.distributed system
고통받고 있습니다partition
그리고 우리는 그 중 하나를 선택해야 합니다.availability
그리고.consistency
:
은행이 를한다면 를 선택한다면,
consistent design
ATM 의 ATM 에서 할 수 하지 않을 것입니다.은행이 사용 가능 여부를 선택하면 ATM이 요청을 처리하고, 무슨 일이 일어났는지 추적하며, 나중에 연결이 되면 다른 ATM에게 무슨 일이 일어났는지만 알려주지만, 그 동안에는 잔액이 일정하지 않게 됩니다.
일관성 – 읽기 요청을 보낼 때, 반환 결과인 경우, 클라이언트 요청에 의해 제공된 가장 최근의 쓰기를 반환해야 합니다.가용성 – 읽기/쓰기 요청은 항상 성공해야 합니다.파티션 허용 오차 – 네트워크 파티션(일부 컴퓨터가 서로 대화하는 데 문제가 있음)이 발생해도 시스템은 계속 작동해야 합니다.
분산형에서는 네트워크 파티션이 발생할 가능성이 있으며 CAP의 "P"를 피할 수 없습니다.따라서 "일관성"과 "가용성" 중에서 선택합니다.
http://bigdatadose.com/understanding-cap-theorem/
분산 시스템은 CAP 정리에 따라 세 가지 특성을 갖습니다.
일관성(C)은 모든 시스템 구성 요소가 동일한 정보를 가지고 있음을 나타냅니다.
시스템의 가용성(A)은 다른 시스템에 장애가 발생하기 때문에 작동을 중지하지 않는다는 것을 의미합니다.
파티션 공차(P)는 임의의 네트워크 패키지 손실 시 시스템이 계속 작동함을 나타냅니다.
CAP 정리에 의하면, 계는 이 세 가지 특징들 중 두 개 이하를 가질 수 없습니다. (AP, CP, CA)
언급URL : https://stackoverflow.com/questions/12346326/cap-theorem-availability-and-partition-tolerance
'it-source' 카테고리의 다른 글
MySQL의 INSERT와 UPDATE의 차이점은 무엇입니까? (0) | 2023.10.03 |
---|---|
워드프레스 테마 및 플러그인에 대한 만족도 작성자 개인 저장소 만들기 (0) | 2023.10.03 |
SQL Server에서 잘라내기(sysdate) (0) | 2023.10.03 |
AppCompat의 전체 화면 테마 (0) | 2023.09.28 |
WP REST API를 통한 연락처 양식 7 사용 (0) | 2023.09.28 |