본문 바로가기
시스템 설계/가상 면접 사례로 배우는 대규모 시스템 설계 기초

7장. 분산 시스템을 위한 유일 ID 생성기 설계

by setung 2025. 1. 25.

다중 마스터 복제

 - DB의 auto_increment 기능을 활용하는 방법으로 각 DB의 ID의 값을 서버 개수만큼 크기로 증가시켜 얻는 방법.

 - 여러 데이터 센터에 걸쳐 규모를 늘리기 어렵다.

 - ID의 유일성은 보장되곘지만 그 값이 시간 흐름에 맞추어 커지도록 보장할 수는 없다.

 - 서버를 추가하거나 삭제할 때도 잘 동작하도록 만들기 어렵다.

 

UUID

 - 128비트로 유일성이 보장되는 ID를 만드는 간단한 방법.

 - 서버 사이의 조율이 필요 없으므로 동기화 이슈가 없고 규모 확장도 쉽다.

 - 시간순으로 정렬할 수 없고, 숫자가 아닌 값이 포함될 수 있다.

 

티켓 서버

 - auto_increment 기능을 갖춘 데이터베이스 서버를 중앙 집중형으로 하나만 사용하는 방법.

 - 유일성이 보장되 ID를 쉽게 만들 수 있다.

 - 구현하기 쉽고, 중소 규모 애플리케이션에 적합하다.

 - 티켓 서버가 SPOF(Single-Point-Of-Failure)가 된다. 티켓 서버를 확장하게 되면 동기화 같은 새로운 문제가 발생한다.

 

트위터 스노플레이크 접근법

 - 사인 비트 : 부호 구별

 - 타임스탬프 : 기원 시각 이후로 몇 밀리초가 경과했는지 값

 - 데이터센터 ID : 5bit로 2^5=32개 데이터센터를 지원할 수 있다.

 - 서버 ID : 5bit로 2^5=32개 데이터센터당 32개 서버를 사용할 수 있다.

 - 일련번호 : 각 서버에서 ID를 생성할 때마다 1만큼 증가 시키는 번호, 1밀리초마다 0으로 초기화한다.

댓글