가상 면접 사례로 배우는 대규모 시스템 설계 기초 - 정리 7장 분산 시스템을 위한 유일 ID 생성기 설계
요약
가상 면접 사례로 배우는 대규모 시스템 설계 기초 리뷰
아키텍처 개념을 실제 설계 판단에 연결하기 위한 참고 노트입니다.
핵심 포인트
- 가상 면접 사례로 배우는 대규모 시스템 설계 기초 리뷰
- 가상 면접 사례로 배우는 대규모 시스템 설계 기초
- 7장 분산 시스템을 위한 유일 ID 생성기 설계
- 개략적인 설계안 제시 및 동의 구하기
- 다중 마스터 복제
지식 그래프
정리 내용
가상 면접 사례로 배우는 대규모 시스템 설계 기초
학습 목적으로 정리한 내용으로 문제가 있다면 내리겠습니다.
(이 책은 한국어판 저작권은 에이전시 원을 통해 저작권자와의 독점 계약으로 인사이트에 있습니다. 저작권법에 의해 한국 내에서 보호를 받는 저작물이므로 무단전재와 무단 복제를 금합니다.)
7장 분산 시스템을 위한 유일 ID 생성기 설계
개략적인 설계안 제시 및 동의 구하기
유일성이 보장되는 ID를 만드는 방법은 여러 가지이다. 다음과 같은 선택지가 있다.
- 다중 마스터 복제
- UUID
- 티켓 서버
- 트위터 스노플레이크 접근법
다중 마스터 복제
다음 ID값을 구할 때 K만큼 증가한다. K는 데이터베이스 서버의 수 이다. ID값의 유일성을 보장하기위해 여러 데이터베이스에 위치한 모든 ID값을 모두 다르게 처리하는 방법,
- 서버를 확장하거나 삭제할 때 K의 변동이 계속 있다.
- 여러 데이터센터에 걸친 확장이 어렵다.
- 만약 시간 순서로 ID값이 커지는 구조로 설계해야한다면 보장받을 수 없는 구조이다.
UUID
컴퓨터 시스템에 저장되는 정보를 유일하게 식별하기 위한 128비트짜리 수다. (중복 UUID 1개가 생길 확률을 50%까지 끌어 올리려면 초당 10개의 UUID를 100년동안 계속 만들어야한다고 밝혔다.) UUID 값은 09c93e62-80b4-468d-bf8a-c07e1040bfb2 같은 형태이다.
- UUID는 단순하다
- 각 서버에 자기가 쓸 ID를 독립적으로 생산 가능하여 규모확장도 쉽다.
- 하지만 128비트로 길다.
- ID를 시간순서로 정렬할 수 없다.
- 숫자가 아닌 문자가 포함된다.
티켓 서버
티켓 서버는 웹 서버와 연동된 하나의 중앙식 티켓서버가 ID를 배정하는 방식이다.
- 유일성 보장, 구현 쉽다.
- SPOF문제
트위터 스노플레이크 접근법
먼저 64비트의 ID 구조를 설명한다. 1비트( 사인 ) + 41비트 (타임스탬프) + 데이터센터ID(5비트) + 서버ID(5비트) + 일련번호 (12비트) 처음 사인은 나중을 위해 유보하는 비트로 음수와 양수를 구분하는데 사용할 수 있다.
상세 설계
위에서 본 트위터 스노플레이크 접근법이 가장 이상적이라 책에서는 밝히고 있다. 상세 설계에서는 타임스탬프와 일련번호 등 한계치를 미리 접근해야한다. 예를들어
- 타임스탬프는 2^41 - 1 = 2199023255551 밀리초가 최대값이다. 약 69년동안 타임스탬프가 작동한다는 의미이다. 따라서 69년뒤 오버플로가 발생하기 떄문에 대비해야한다.
- 일련번호는 2^12 = 4096개의 값이다. 타임스탬프는 밀리초 단위이기 떄문에 특정 한 서버가 만약 1밀리초 동안 4096개 이상의 서버를 만들면 오버플로이다.
학습 목적으로 정리한 내용으로 문제가 있다면 내리겠습니다.
(이 책은 한국어판 저작권은 에이전시 원을 통해 저작권자와의 독점 계약으로 인사이트에 있습니다. 저작권법에 의해 한국 내에서 보호를 받는 저작물이므로 무단전재와 무단 복제를 금합니다.)
출처
- 원문: https://www.notion.so/7-ID-245172a556d68029877ff01b1ea0f675
- Vault path: wiki/notes/system-design/가상-면접-사례로-배우는-대규모-시스템-설계-기초---정리-7장-분산-시스템을-위한-유일-ID-생성기-설계.md