새소식

반응형
Study/대규모 시스템 설계 기초

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

  • -
반응형

문제 이해 및 설계 범위 확정

질문을 통해 모호함을 없애라

요구사항

  • ID는 유일
  • ID는 숫자로만 구성
  • ID는 64비트로 표현될 수 있는 값
  • ID는 발급 날짜에 따라 정렬 가능
  • 초당 10,000개의 ID 생성 가능해야 한다.

 

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

분산 시스템에서 유일성이 보장되는 ID를 만드는 방법은 여러 가지다.

각각의 선택지를 알아보자.

 

  • 다중 마스터 복제
    • 데이터베이스의 auto_increment 기능을 활용하는 것 
    • 다만, ID값을 구할 때 1만큼 증가시키는 게 아니라 k만큼 증가시킨다
    • 단점
      • 시간의 흐름에 맞추어 커지도록 보장할 수 없다 
        • -> 하나의 서버에 요청이 몰린 이후에 다른 서버에 요청이 가면 이후  시간인데도 더 작은 값을 가질 수 있을 것 같다
      • 서버를 추가하거나 삭제할 때도 잘 동작하도록 만들기 어렵다

출처:https://velog.io/@pjoon357/대규모-시스템-설계-기초-7.-분산-시스템을-위한-유일-ID-생성기-설계

  • UUID
    • 컴퓨터 시스템에 저장되는 정보를 유일하게 식별하기 위한 128비트짜리 수
    • 서버 간 조율 없이 독립적으로 생성 가능
    • 단점
      • 128비트로 길다
      • 시간순 정렬 불가
      • 숫자가 아닌 값
  • 타겟 서버
    • 타겟 서버는 중앙 집중형으로 하나만 사용된다.
    • 단점
      • SPOF(single point of failure)
      • 이를 극복하기 위해 여러 대 서버가 필요하지만, 데이터 동기화와 같은 새로운 문제 발생 

출처:https://velog.io/@pjoon357/대규모-시스템-설계-기초-7.-분산-시스템을-위한-유일-ID-생성기-설계

  • 트위터 스노플레이트 접근법
    • 위의 모든 조건을 만족하는 방법 
    • 64비트를 분산
    • 사인(sign) 비트: 1비트를 할당
      • 음수와 양수를 구별하는 데 사용
    • 타임스탬프(timestamp): 41비트를 할당
      • 기원 시간(epoch) 이후로 몇 밀리초가 경과했는지 나타내는 값
    • 데이터센터 ID: 5비트 할당
      • 총 32개 데이터센터를 지원
    • 서버 ID: 5비트 할당
      • 각 데이터센터당 32개의 서버를 사용
    • 일련번호: 12비트를 할당
      • 각 서버에서는 ID를 생성할 때마다 이 일련번호를 1만큼 증가
      • 이 값은 1밀리 초가 경과할 때마다 0으로 초기화된다.

출처:https://velog.io/@pjoon357/대규모-시스템-설계-기초-7.-분산-시스템을-위한-유일-ID-생성기-설계

반응형

'Study > 대규모 시스템 설계 기초' 카테고리의 다른 글

URL 단축기 설계  (0) 2025.02.28
키-값 저장소 설계  (0) 2024.07.02
안정 해시 설계(hash ring)  (0) 2024.06.21
알림 시스템 설계  (1) 2024.01.16
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.