issues
search
NW-study
/
system-design-interview
8
stars
0
forks
source link
[Chapter 07] Q&A
#7
Open
travelbeeee
opened
2 years ago
travelbeeee
commented
2 years ago
[Chapter 07] 분산 시스템을 위한 유일 ID 생성기 설계
궁금한 점 혹은 이야기하고 싶은 주제 코멘트로 정리
추가로 같이 보면 좋을 것 같은 기술 블로그, 아티클 등 공유
travelbeeee
commented
2 years ago
현석
이해하는데 어려운 내용은 없었습니다.
64비트를 모두 ID에 이용해서 표현하는 방법에 국한되서 고민했는데.... 트위터 스노플레이크처럼 64비트를 나눠서 [ ID 생성된 시간 / 어떤 데이터 센터의 어떤 서버인지 / 같은 시간에 생성된 ID를 구분하는 key ] 로 나눠서 저장하면 간단하게(?) 해결이 되네요...
7장 후기 : 세상은 넓고 머리 좋은 사람은 많다.
zziri
commented
2 years ago
지훈
UUID도 꽤 많이 이용하는 unique key 생성 방법인데, 어떻게 생성하는지 그 과정이 궁금함
https://kingofbackend.tistory.com/173
보통 사용하는 버전은 4 이고, 기본적으로 랜덤 생성
https://www.uuidgenerator.net/version4
시계 동기화
하나의 서버가 여러 코어에서 실행될 경우... 이게 무슨 경우지..?
Network Time Protocol
NTP를 이용해서 동기화하려면 간단하게 설정만 하면 됨
https://webdir.tistory.com/120
easyfordev
commented
2 years ago
이지
Q. 다중 마스터 복제 방법 내용 중, 'ID의 유일성은 보장되겠지만 그 값이 시간 흐름에 맞추어 커지도록 보장할 수 없다' 가 이해가 잘 안가는데요, 왜 그런걸까요~?
A. 한 서버에 장애가 발생했을 경우, 특정 서버로 요청이 몰리는 경우 등을 고려
시계 동기화 문제의 해결법인 NTP
이런 문제가 나왔을 때, 가장 베스트 방법이 트위터 snowflake 접근법밖에 없는 것일까? 이거 외워서 가면 너무 외운 티? 준비한 티가 날 것 같다.
instagram ID generator :
https://instagram-engineering.com/sharding-ids-at-instagram-1cf5a71e5a5c
7 Famous Approaches to Generate Distributed ID with Comparison Table
UUID / GUID
MySQL: Centralizing Auto-Increments / Famously known as “Flickr’s Ticketing Service” Approach
MySQL: Cluster Mode
MongoDB의 ObjectId
Twitter Snowflake
Baidu UID generator
Sony
참고) 유명한 system design 문제인 것 같아서, 다른 해결 방법은 없는지 궁금해서 찾아봄
https://towardsdatascience.com/ace-the-system-design-interview-distributed-id-generator-c65c6b568027
https://medium.com/@sandeep4.verma/system-design-distributed-global-unique-id-generation-d6a440cc8e5
https://eileen-code4fun.medium.com/system-design-interview-globally-unique-id-generation-25359500573
meloncha
commented
2 years ago
민석
snowflake 조심해야할 점
멀티스레드로 snowflake 알고리즘을 사용하여 id를 생성하면 동일한 id가 나올 가능성이 있다
여러 인스턴스를 생성하면 인스턴스 간에 숫자가 반복될 수 있다
싱글톤으로 작성해야한다
참고 :
https://programmer.ink/think/implementation-of-snowflake-algorithm-in-singleton-mode.html
UUID 의 대안 : ULID
Universally Unique Lexicographically Sortable Identifier
사전순으로 정렬가능한 UUID
참고 :
https://github.com/ulid/spec
https://velog.io/@injoon2019/UUID-vs-ULID
janeljs
commented
2 years ago
지선
id에 숫자 아닌 값이 포함되는게 왜 단점일까?
NTP - 인터넷을 통해 컴퓨터 시간을 master clock에 동기화하는 프로토콜
0.001초까지 동기화 가능
외부 서버를 통해 시간을 동기화하기 때문에 보안에 취약
별도의 time server를 이용해서 보완
https://guslabview.tistory.com/452
KKambi
commented
2 years ago
한비
다중 마스터 복제 방법 내용 중, 'ID의 유일성은 보장되겠지만 그 값이 시간 흐름에 맞추어 커지도록 보장할 수 없다' -> 쓰기용 마스터가 여러대일 경우 INSERT문이 골고루 요청되리란 보장이 없다? -> DB 서버 단에도 로드 밸런서를 두면 안되나?
다른 분들이 다 적어주셔서 딱히 더 찾아볼게 없어요 ㅠㅠ
kihyun-yang
commented
2 years ago
기현
다중 마스터 복제 방식의 첫번째 단점으로 여러 데이터 센터에 걸쳐 규모를 늘리기 어렵다고 나오는데, 왜 데이터 센터에 걸쳐 규모를 늘리기 어려운건지 정확히 잘 이해가 안감. (p119)
데이터베이스 서버 수에 해당하는 k만큼 증가된 값이 다음 ID 값을 구한다고 나오는데, 데이터베이스 수가 늘어나면 k가 변하니까 이걸 대응하기 힘들다는 건가?
[Chapter 07] 분산 시스템을 위한 유일 ID 생성기 설계