가장 쉽게 생각할 수 있는 방법은 DB의 auto_increment 속성이 설정된 관계형 DB 기본키를 사용하는 것이다. 하지만 이 방법은 분산 환경에서의 지연시간 요구사항을 지키기 어렵다.
1. 문제 이해 및 설계 범위 확정
요구사항
- ID는 유일해야한다.
- ID는 숫자로만 구성되어야 한다.
- ID는 64비트로 표현 가능해야한다.
- ID는 발급 날짜에 따라 정렬 가능해야한다.
- 초당 10,000개의 ID를 만들 수 있어야 한다.
2. 개략적 설계안 제시 및 동의 구하기
다음과 같은 선택지들을 알아보자
- 다중 마스터 복제
- UUID
- 티켓 서버
- 트위터 스노우플레이크 접근법