피드로 돌아가기
Dev.toBackend
원문 읽기
분산 시스템에서 중앙 조율 없이 고유하고 시간순 정렬 가능한 ID를 생성하는 Snowflake 알고리즘과 UUID v7 비교
Snowflake e UUID v7: Gerando identificadores únicos em sistemas distribuídos
AI 요약
Context
여러 지역에 분산된 수십 대 서버가 동시에 트랜잭션 ID를 생성할 때 충돌을 방지하는 것이 핵심 과제이다. 데이터베이스 오토 인크리먼트는 중앙 병목이 되고, UUID v4는 무작위로 생성되어 B-tree 인덱스에서 심각한 프래그멘테이션을 유발한다.
Technical Solution
- Snowflake ID는 1비트(부호) + 41비트(타임스탬프) + 10비트(머신 ID) + 12비트(시퀀스)로 총 64비트 구조를 가진다
- 타임스탬프를 최상위 비트에 배치하여 ID 크기 비교만으로 생성 순서를 알 수 있다
- 각 서버는 고유한 Machine ID를 보유하며 별도 조율 없이 독립적으로 ID를 생성한다
- Sequence 카운터가 같은 밀리초 내 다중 생성 시 0부터 4095까지 순차 증가한다
- UUID v7은 2024년 RFC 9562로 표준화되어 Snowflake와 동일한 문제를 다른 방식으로 해결한다
실천 포인트
마이크로서비스 아키텍처에서 각 서비스 인스턴스에 고유한 Worker ID를 할당하고 Snowflake 알고리즘을 적용하면 Redis나 데이터베이스 조율 없이 초당 수백만 개의 고유 ID를 생성할 수 있다