개요
동시성 처리를 위해 고려해야 할 점
- 연산의 무결성
- 연산의 격리성
- 동시성 처리
- 충돌 시 해결
Lamport Clock vs Vector Clock
Lamport Clock과 Vector Clock의 차이에 대해 설명하겠습니다. 두 시계는 분산 시스템에서 이벤트의 순서를 추적하기 위해 사용되지만, 서로 다른 방식으로 동작하며 제공하는 정보의 수준이 다릅니다.
Lamport Clock
Lamport Clock은 간단하고 경량화된 방식으로 분산 시스템의 이벤트 순서를 추적합니다.
- 작동 원리:
- 각 노드는 자체적으로 증가하는 단일 숫자(타임스탬프)를 유지합니다.
- 노드에서 이벤트가 발생하면 시계를 증가시켜 현재 시간 값을 기록합니다.
- 메시지를 전송할 때 현재 Lamport Clock 값을 메시지에 포함하여 전달합니다.
- 메시지를 수신한 노드는 자신의 시계를
max(현재 시계, 수신된 시계) + 1
로 업데이트합니다.
- 특징:
- 인과적 순서 보장: Lamport Clock은 두 이벤트 와 가 인과적으로 관련되어 있을 때, 의 타임스탬프가 보다 작음을 보장합니다 (A→B⟹C(A)<C(B)).
- 병렬성 표현 부족: 두 이벤트가 병렬인지(즉, 서로 인과 관계가 없는지) Lamport Clock만으로는 알 수 없습니다.
- 단순성: 유지 및 업데이트가 쉽고, 메시지 크기가 작습니다.
- 장점:
- 구현이 간단하고, 시스템 오버헤드가 낮음.
- 이벤트의 대략적인 순서를 빠르게 추적 가능.
- 단점:
- 병렬 이벤트를 구분할 수 없음.
- 보다 정밀한 인과 관계를 필요로 하는 상황에서는 적합하지 않음.
Vector Clock
Vector Clock은 각 노드가 다른 모든 노드의 상태를 추적하는 배열 형태의 논리적 시계입니다.