CAP 및 엔지니어링 트레이드 오프
CAP 상태: 네트워크 분리 (파티션, P) 조건에서 분산 시스템은 강력한 일관성 (일관성, C) 과 가용성 (가용성, A) 을 동시에 보장 할 수 없습니다. P가있는 경우 CP 또는 AP를 선택해야합니다. 스플릿이없는 경우 제한이 적용되지 않지만 주로 대기 시간과 비용과 같은 다른 타협이 나타납니다.
실용 공학은 CAP를 넘어선 다: PACELC가 중요하다 (P-C 또는 A를 선택하는 경우; 그렇지 않으면-대기 시간과 일관성 중에서 선택), 일관성 모델, SLA/SLO, 사례 및 비즈니스 위험 사용.
1) 기본 정의 (철학 없음)
일관성 (C): 모든 고객은 동일한 결과를 "마치" 작업이 순차적으로 수행되었습니다 (선형성/강한 일관성).
가용성 (A): 사용할 수없는 노드에 대한 각 요청은 분할 할 때에도 합리적인 시간에 응답으로 완료됩니다.
분리 (P): 노드/지역 클러스터 간의 연결 손실 또는 현저한 저하; 본질적으로- 대규모로 "피할 수없는".
PACELC: P 인 경우 C 또는 A를 선택하십시오. 다른 (P가 아닌 경우) L (낮은 지연) 또는 C (강한 일관성) 를 선택하십시오.
2) 직관적 인 선택 사진
CP (일관성이 더 중요합니다): 분리 할 때 불변량을 위반하지 않도록 일부 요청을 거부/차단합니다. 돈, 거래, 잔액 회계에 적합합니다.
AP (가용성이 더 중요합니다): 우리는 항상 대답하지만 일시적인 불일치를 인정한 다음 충돌 (CRDT/병합 규칙) 을 축소합니다. 카운터와 같은 소셜 피드에 적합합니다.
CA (C와 A는 동시에): P가없는 경우에만 가능합니다. 즉, 네트워크가 건강하면 가능합니다. 실제 운영에서 "CA" 는 설계 속성이 아닌 임시 상태입니다.
3) PACELC: 지연을 잊지 마십시오
P가없는 경우 선택은 종종 낮은 대기 시간 (L) 과 강한 일관성 (C) 사이입니다
지역 간의 강력한 일관성 = 대륙간 정족수는 수십 ~ 수백 ms ~ p95입니다.
로컬 판독 값 (낮은 L) = 약한 보증 (읽기-내-쓰기, 제한된 부실성, 결국).
PACELC는 전 세계적으로 "빠르고 엄격한" 이유를 설명하는 데 도움이됩니다. 빛이 순간적이지 않으며 정족수는 네트워크 폴딩으로 자랍니다.
4) 일관성 모델 (빠른 스펙트럼)
선형 가능/강한: 마치 하나의 순차적 순서 인 것처럼.
직렬화 가능: 일부 순차적 트랜잭션 순서 (레코드 레벨 이상) 와 동일합니다.
읽기/모노토닉 읽기: 클라이언트는 자신의 녹음 후 새로운 값을 읽습니다.
경계 부실성: N 버전을 읽지 않습니다.
최종 일관성: 모든 사본은 시간이 지남에 따라 수렴됩니다. 갈등은 해결되어야합니다.
5) 제품 및 프로토콜의 CP 및 AP 패턴 (개념적으로)
CP 접근 방식: 쿼럼 로그/리더십 (Raft/Paxos), 엄격한 거래, 글로벌 리더 위치, 동기 복제. 가격-P의 일부 요청 실패 및 지연 증가.
AP 접근 방식: 멀티 마스터/멀티 리더, CRDT, 가십 분포, 비동기 복제, 충돌 해결 (LWW, 벡터 클럭, 도메인 병합 함수). 가격-도메인 규칙의 일시적인 불일치 및 복잡성.
6) 다중 지역의 트레이드 오프
글로벌 리더 (CP): 간단한 논리이지만 "먼" 지역은 대기 시간을 지불합니다. P-레코드 차단.
지역 지도자 + asynchron (AP): 현지에서 빨리 쓰고 복제하십시오. 상충되는 변경 사항은 병합이 필요합니
지리 분할: 사용자/관할권에 더 가까운 데이터 "실시간"; 교차 지역-집계 만.
사가/CRDT 없이는 이중 쓰기가 금지됩니다. 그렇지 않으면 팬텀과 이중 쓰기가 이루어집니다.
7) 엔지니어링 불변량 및 비즈니스 솔루션
첫째, 불변량: 절대 위반할 수없는 것 (이중 소비, 음의 균형, 키의 독창성) 및 "생존" (보기 카운터, 권장 사항).
그런 다음 선택:- CP 하드 → 는 해당 작업에 대해 변하지 않습니다.
- AP 소프트 → 변하지 않고 붕괴됩니다.
8) 트레이드 오프 완화 기술
캐시 및 CQRS: 가까운 캐시/프로젝션 (AP) 을 통해 읽고 엄격한 로그 (CP) 로 작성합니다.
타협 언어로서의 RPO/RTO: 손실 될 수있는 데이터 양 (RPO) 및 빠르게 복구하는 방법 (RTO).
일관된 ID 및 시계: 단조로운 타임 스탬프 (하이브리드/트루 타임 접근), ULID/눈송이.
Sagas/TSS: 글로벌 잠금 장치 대신 비즈니스 보상.
CRDT와 도메인 병합: 컬렉션, 카운터, "마지막 승리".
경계 정체: UX와 정밀도의 균형.
9) 관찰 가능성, SLO 및 사건 관리
읽기/기록 및 영역에 대해 대기 시간 별 SLO (p50/p95/p99).
지역의 페일 오버를 고려하여 가용성 별 SLO.
라그 복제/충돌: 충돌의 백분율, 평균 해결 시간.
P 부호에 대한 경고: 지역 간 채널의 타임 아웃 급증, 쿼럼 오류 증가.
계획 삭제: 읽기 전용 모드, 로컬 유지 보수 및 병합, "비싼" 기능 비활성화.
10) 전략 선택 점검표
1. 어떤 불변량을 위반해서는 안됩니까? 결국 무엇을 허용합니까?
2. 대기 시간이 짧은 지역 간 기록이 필요합니까?
3. 대상 SLO (대기 시간/가용성) 및 비용 (탈출/복제) 은 무엇입니까?
4. 수동 병합 또는 자동 만 허용합니까 (CRDT/규칙)?
5. 네트워크 장애 프로파일, 빈도, 지속 시간, 폭발 반경은 무엇입니까?
6. 데이터 (레지던트) 의 법적 현지화가 있습니까?
7. 각 데이터 유형/작동에 적합한 일관성 모델은 무엇입니까?
8. 지연, 갈등, 정족수 상태를 어떻게 관찰 할 수 있습니까?
9. 시스템은 P: 차단, 저하, 분할 트래픽에서 무엇을합니까?
10. P 이후의 데이터 복구 및 본국 송환 계획은 무엇입니까?
11) 전형적인 오류
"CA Forever 추구. "첫 번째 P에서는 미리 선택해야합니다.
병합 규칙이없는 글로벌 멀티 마스터. 갈등은 데이터와 신뢰를 소비합니다.
모든 곳에서 강력한 일관성. "초과 쿼럼은 p95/p99와 예산을 기록했습니다.
거래/사가없는 이중 쓰기. 불변과 팬텀을 잃어 버렸습니다.
PACELC 무시. 평화 시간에 대기 시간은 폭풍으로 접근성이 떨어집니다.
충돌과 지연의 원격 측정. 문제는 사용자 만 볼 수 있습니다.
12) 빠른 레시피
지불/균형: 쿼럼을 사용한 CP 스토리지; 지도자를 통해서만 기록; 읽기는 캐시 될 수 있지만 중요한 UX-쓰기 읽기.
내용/피드: AP 복제 + CRDT/병합 규칙; P-현지에서 봉사 한 다음 붕괴하십시오.
글로벌 SaaS: '테넌트/지역' 에 의한 지리 분할; "홈" 영역 (CP), 보고서/검색-비동기 프로젝션 (AP) 을 통한 엄격한 작업.
실시간 신호: Anycast/edge + AP 버스; 중요한 명령은 인정 된 채널 (CP) 을 통과합니다.
감사/로그: CP 보증이있는 유일한 진실의 원천 (추가 전용) - 캐시 및 투영.
13) 미니 참조 아키텍처 (구두)
쓰기 코어 (CP): 서비스 간 효과를위한 리더 + 쿼럼 복제, 엄격한 불변량, 사가.
읽기 평면 (AP): 구체화 된보기, 캐시, 검색 색인, 비동기 업데이트.
지리 라우팅: 사용자는 "홈" 영역에 들어갑니다. P - 로컬 모드 + 후속 복제에서.
충돌 엔진: CRDT/규칙; 충돌 로그 및 수동 해결 도구.
관찰 가능성: 쿼럼 추적, 지연, 네트워크 사고 맵.
14) 실제 지연 수학 (간단한 점수)
광학 1000km 당 5ms (RTT 이상). 대륙간 정족수 → p95 쉽게> 150-250 ms.
기록 할 "글로벌 스트롱" 은 값 비싼 요청입니다. UX에 <100-150ms가 필요한 경우 로컬 쓰기 홈 + 비동기 결과를 고려하십시오.
15) 분리 정책
CP 경로: 쿼럼 외부의 레코드 차단; 읽기 전용; 사용자에게 정직한 상태를 부여하십시오.
AP 경로: 현지에서 봉사; 복구 중 마크 버전-결정 론적 병합; 파싱 대기열에 충돌이 발생합니다.
결론
CAP는 교리가 아니라 알림입니다. 네트워크 부서는 불가피하며 프로젝트는 폭풍에서 희생 할 내용 (접근성 또는 엄격한 일관성) 을 미리 선택해야합니다. PACELC는 맑은 날씨에 주요 지연 축을 추가합니다. 결합 전략: 불변량이 신성한 CP 코어와 속도와 안정성이 더 중요한 AP 평면을 유지하십시오. 원격 측정, 저하 계획 및 프로세스 병합-시스템은 데이터와 사용자의 신뢰를 모두 유지합니다.