- 선형성: 시스템에 데이터 복사본이 하나만 있고 모든 연산은 원자적인 것처럼 보이게 만드는 것 (최신성 보장)
- 유용한 예
- 잠금과 리더 선출
- 제약 조건과 유일성 보장
- 채널 간 타이밍 의존성
- 유용한 예
- 선형성과 가용성은 트레이드 오프가 있다.
- 선형성을 보장하려 하면 네트워크 문제 등에 약해지게 된다.
- CAP 정리가 이런 개념을 설명한다.
- 심지어 RAM조차도 선형적이지 않음
- 순서화 보장
- 인과성을 보존하는 데 도움을 준다. 인과성은 이벤트에 순서를 부과한다.
- 선형성: 전체 순서를 정할 수 있다.
- 인과성: 인과적인 관계가 있을 경우에만 순서를 비교할 수 있다.
- 선형성은 인과성을 내포한다.
- 일련번호나 타임스탬프를 써서 이벤트의 순서 정하는 식으로 구현된다.
- 노드별로 독립적인 일련번호 집합 생성 (홀짝)
- 각 연산에 물리적 시계에서 얻는 타임스탬프 생성
- 노드 별로 일련번호 블록을 할당
- 램포트 타임스탬프
- (카운터, 노드ID) 쌍으로 일련번호 생성한다.
- 카운터의 최대값을 추적하고 새로운 카운터를 생성한다.
- 타임스탬프로 먼저 비교하고 같을 경우 노드 ID로 비교
- 동일한 사용자 계정 생성 시처럼 당장 결정을 해야할 때 사용이 힘들다.
- 전체 순서 브로드캐스트
- 신뢰성 있는 전달: 어떤 메시지도 손실되지 않고 메시지가 한 노드에 전달되면 모든 노드에도 전달된다.
- 전체 순서가 정해진 전달: 메시지는 모든 노드에 같은 순서로 전달된다.
- 동일한 사용자 계정 생성 시, 최초 요청만 처리할 수 있어서 선형성 저장소 구현이 가능하다
- 전체 순서 브로드캐스트로 선형성 저장소 구현이 가능하다. (일련번호가 유일한 값이 되므로)
- 합의
- 2단계 커밋(2PC): 코디네이터를 사용해서 1단계로 참여 준비를 확인하고 2단계로 실제 커밋을 한다.
- 1단계에서 모두 동의를 해야한다.
- 동의를 하고 커밋 요청이 오면 무조건 커밋을 해야 한다. (돌아갈 수 없는 지점)
- 코디네이터에 장애가 발생하면 커밋도 어보트도 하지 못 하는 지점이 생긴다. (블로킹)
- 내결함성을 지니는 합의
- 전체 순서 브로드캐스트는 모든 노드에 정확히 한 번, 같은 순서로 전달되어야 하는데, 이 작업은 합의를 여러 번 하는 것과 동일하다.
- 단일 리더 복제와 합의
- 새 노드를 선출하기 위해 투표를 하고 선출이 되면 에포크 번호를 증가시킨다.
- 리더는 결정하기 위해 에포크 번호가 더 높은 리더가 없는 지 확인해야 하여 정족수로 투표를 받는다.
- 단점
- 합의는 동기식 복제라 성능의 손해 발생
- 과반수를 유지해야 하므로 네트워크 문제에 약함
- 노드 집합이 고정되어 있다고 가정하여 클러스터 변경이 힘듦
- 2단계 커밋(2PC): 코디네이터를 사용해서 1단계로 참여 준비를 확인하고 2단계로 실제 커밋을 한다.
- 코디네이션 서비스: 주키퍼로 대표되며, 분산 시스템 구축에 유용한 기능들을 제공함
- 선형성 원자적 연산 (실제로 합의가 필요함)
- 연산의 전체 순서화
- 장애 감지
- 변경 알림
'Studying > Data System Design' 카테고리의 다른 글
스트림 처리 [데이터 중심 애플리케이션 설계 11장] (0) | 2023.08.22 |
---|---|
일괄 처리 [데이터 중심 애플리케이션 설계 10장] (0) | 2023.08.21 |
분산 시스템의 골칫거리 [데이터 중심 애플리케이션 설계 8장] (0) | 2023.08.19 |
트랜잭션 [데이터 중심 애플리케이션 설계 7장] (0) | 2023.07.21 |
파티셔닝 [데이터 중심 애플리케이션 설계 6장] (0) | 2023.07.13 |