-
Notifications
You must be signed in to change notification settings - Fork 1
기술문서 ‐ snowflake
xb205 edited this page Aug 27, 2023
·
1 revision
클린 아키텍처를 사용함에 따라, id 생성 또한 정책
이라고 생각해서, application에서 미리 생성하고 DB로 넣어주기로 결정했다.
- synchronized가 없어 요청이 몰려도 빠르게 생성 가능하다.
- 순차적으로 증가하지 않는다는 특징 때문에, B-Tree에 저장할때 잦은 재정렬이 발생한다.
- 1번의 이유로 CPU, DISK, MEMORY 사용량이 떨어진다.
Snowflake란
(___________) (______) (__________)
( timestamp ) ( node ) (sequential)
로 이루어져있고, node를 장비의 고유번호 (혹은 우리가 지정) 해서 서버마다 다른 값이 생성됨을 보장한다.
원래는 MSA에서 분산된 서버끼리생성된 id값에 unique를 주기위해 개발된것 이라고 알고있는데, node를 스레드 번호로 수정하면, thread 별로 unique한 id가 생성됨을 보장함과 동시에 synchronized를 피할 수 있다.
UUID는 순차적으로 증가하지 않는다는 단점때문에, 사용하지 않기로 했으며, 순차적으로 증가하고, synchronized가 (거의) 없는 snowflake로 결정