-
분산 환경에서의 일관성 처리: 정족수 합의시스템 설계 2022. 8. 28. 15:07
[가상 면접 사례로 배우는 대규모 시스템 설계]를 읽고 작성하는 포스트 입니다.
틀린 내용이 있을 수도 있습니다!
틀린 내용이 있다면 댓글로 달아주시면 감사하겠습니다!
다중화된 노드에 데이터를 분산 저장할 때, 정족수 합의 알고리즘을 이용해서 일관성 수준을 조절한다.
N = 사본의 갯수
W = 쓰기 연산에 대한 정족수로 쓰기 연산이 성공한 것으로 간주되려면,
적어도 W개의 서버로부터 쓰기 연산이 성공했다는 응답을 받아야 한다.
R = 읽기 연산에 대한 정족수로 읽기 연산이 성공한 것으로 간주되려면,
적어도 W개의 서버로부터 읽기 연산이 성공했다는 응답을 받아야 한다.
예시
다음은 N=3일 때 key1을 통해서 val1을 서버에 저장할 때다.
참고로 중재자는 클라이언트와 노드 사이의 Proxy이며, 노드가 중재자가 되는 경우도 있다.
W = 1인 경우, 중재자는 1대의 노드로부터 쓰기 응답을 받으면 되기 때문에 쓰는 속도가 빠르다.
R = 1인 경우, 중재자는 1대의 노드로부터 읽기 응답을 받으면 되기 때문에 읽는 속도가 빠르다.
보통 응답 속도가 빠른 경우 일관성은 낮아지며,
응답 속도가 느린 경우 일관성은 높아진다.
그래서 이러한 조합을 이용하면 다음과 같은 경우들로 나눌수 있다.
1. R = 1, W = N: 빠른 읽기 연산에 적합한 시스템
2. R = N, W = 1: 빠른 쓰기 연산에 적합한 시스템
3. R + W > N: 강한 일관성이 보장
4. R + W <= N: 강한 일관성이 보장되지 않음
시스템이 요구하는 일관성의 수준에 따라 R, W, N을 조절하면 된다.
일관성 모델의 종류
1. 강한 일관성 모델
- 모든 사본에 현재 쓰기 연산의 결과가 모두 반영될 때까지 해당 데이터에 대한 쓰기/읽기 연산을 금지
- 클라이언트는 절대로 낡은 데이터를 읽을 수 없음
- 고가용성 시스템에 적합하지 않음
2. 약한 일관성 모델
- 모든 노드에 현재 쓰기 연산의 결과가 일부 반영되었으면, 해당 데이터에 대한 쓰기/읽기가 가능한 모델
- 클라이언트는 가장 최근에 갱신된 결과를 받지 못할 수도 있음
- 고가용성이 요구되는 시스템에 적합
3. 최종 일관성 모델
- 약한 일관성 모델의 한 형태
- 최종적으로 갱신 결과가 모든 사본에 동기화되는 모델
- 다이나모 DB, 카산드라가 택하고 있는 모델
- 클라이언트가 최신으로 갱신된 결과를 받지 못할 수도 있는데, 이러한 경우 클라이언트 단에서 해결함
- 클라이언트 측에서 데이터의 버전 정보를 활용해 일관성이 깨진 데이터를 읽지 않도록 함
반응형'시스템 설계' 카테고리의 다른 글
분산 키-값 저장소 설계 (0) 2022.08.30 분산 환경에서의 장애감지: Gossip Protocol (1) 2022.08.28 안정 해시 설계 (0) 2022.08.02 처리율 제한 장치(Rate Limiter) 설계 (0) 2022.07.31 대규모 시스템에서 데이터베이스 사용 (0) 2022.07.24