kaonmir
Sign In
분산 시스템을 위한 유일 ID 생성기
1. 다중 마스터 복제
•
새로운 레코드를 만들 때마다 k(서버 수)만큼 증가한 값을 ID로 쓴다.
•
서로 영향을 끼치지 않고 ID를 만들기 때문에 성능이 보장된다.
단점
•
여러 데이터 센터에 걸쳐 규모를 늘리기 어렵다.
•
서버의 추가 및 삭제가 어렵다.
•
ID가 시간 흐름에 맞추어 커지도록 보장할 수 없다.
2. UUID (Universally Unique Identifier)
•
충돌 가능성이 지극히 낮은 128비트 문자열
•
서버의 조율 없이 각자 만들 수 있다.
장점
•
단순하고 동기화 이슈가 없다.
•
확장에 용이하다.
단점
•
128비트로 비교적 길다.
•
시간과 연관성이 없다.
•
숫자만 있지 않고 문자도 포함된다.
3. 티켓 서버
•
ID를 만드는 서버를 따로 두고 이 서버에서 DB에게 ID값을 준다.
장점
•
유일성이 보장된다.
단점
•
SPOF 문제 발생
•
티켓 서버를 여러 대 두면 동기화 문제 발생
4. 트위터 스노우플레이크
패킷 구성하듯
64
비트를 여러 구역으로 쪼개서 값을 부여한다.
•
01
sign bit : 일단 예약 비트이다.
•
41
timestamp : epoch(아무 시간이나 정함) 이후 millisecond
•
05
datacenter id : 총 32개의 데이터센터를 표시
•
05
server id : 데이터센터당 32개의 서버를 표시
•
12
serial number : 각 서버에서 이 숫자를 1씩 증가
특징
•
타임스탬프가 제일 앞에 있기 때문에 시간에 따른 정렬이 가능하다.
•
타임스탬프는
2^{41}-1
밀리초, 즉 69년만 측정 가능하다.
•
일렬번호가 의미하는 것 : 한 서버가 1ms 내에 최대 2^12개의 ID를 만들 수 있다.
◦
동시성이 적은 어플리케이션의 경우 일렬번호를 줄일 수 있다.
◦
또 데이터센터와 서버 수도 적절히 예측해 조절한다.
Made with Slashpage