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

1단계 : 문제 이해 및 설계 범위 확정

요구사항

  • ID는 유일해야 한다.

  • ID는 숫자로만 구성되어야 한다.

  • ID는 64비트로 표현될 수 있는 값이어야 한다.

  • ID는 발급 날짜에 따라 정렬 가능해야 한다.

  • 초당 10,000개의 ID를 만들 수 있어야 한다.

2단계 : 개략적 설계안 제시 및 동의 구하기

선택지

  • 다중 마스터 복제 (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)로 분할하자.

3단계 : 상세 설계

  • 타임스탬프

  • 일련번호

    • 12비트이므로, 2^12=4096개의 값을 가질 수 있다.

Last updated