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-생성기-설계 반응형 공유하기 URL 복사카카오톡 공유페이스북 공유엑스 공유 게시글 관리 구독하기my story 저작자표시 Contents 문제이해및설계범위확정 개략적설계안제시및동의구하기 당신이 좋아할만한 콘텐츠 URL 단축기 설계 2025.02.28 키-값 저장소 설계 2024.07.02 안정 해시 설계(hash ring) 2024.06.21 알림 시스템 설계 2024.01.16 댓글 0 + 이전 댓글 더보기