7장 : 분산 시스템을 위한 유일 ID 생성기 설계
Last updated
Last updated
요구사항
ID는 유일해야 한다.
ID는 숫자로만 구성되어야 한다.
ID는 64비트로 표현될 수 있는 값이어야 한다.
ID는 발급 날짜에 따라 정렬 가능해야 한다.
초당 10,000개의 ID를 만들 수 있어야 한다.
선택지
다중 마스터 복제 (multi-master replication)
데이터베이스의 auto_increment 기능을 활용하며, 다만 다음 ID의 값을 구할 때 k만큼 증가시키는 것이다. (k는 현재 사용 중인 데이터베이스 서버 수다. )
단점
여러 데이터 센터에 걸쳐 규모 확장 어려움
ID 유일성 보장, 그 값이 시간 흐름에 맞추어 커지는 것은 보장 못함
서버를 추가하거나 삭제할 떄도 잘 동작하도록 만들기 어려움
UUID(Universally Unique Identifier)
UUID는 컴퓨터 시스템에 저장되는 정보를 유일하게 식별하기 위한 128비트짜리 수다.
단점
ID가 128비트로 김
ID를 시간순으로 정렬할 수 없음
ID에 숫자가 아닌 값이 포함될 수 있음
티켓 서버(ticket server)
장점
유일성 보장, 오로지 숫자로 구성된 ID
구현 쉬움, 중소 규모 애플리케이션에 적합
단점
티켓 서버가 SPOF가 된다.
트위터 스노플레이크(twitter snowflake)
격파 전략(divide and conquer). 생성해야 하는 ID의 구조를 여러 절(section)로 분할하자.
타임스탬프
일련번호
12비트이므로, 2^12=4096개의 값을 가질 수 있다.