흰연
2023. 7. 30. 22:55
2023. 7. 30. 22:55
7장 분산 시스템을 위한 유일 ID 생성기 설계
1단계 문제 이해 및 설계 범위 확정
- ID 특성
- 새로운 레코드의 ID의 증가 값
- 증가 값이 1씩 증가하지는 않지만, 과거의 값보다 나중에 만든 값이 더 큰 ID를 갖는다.
- ID는 숫자로 구성
- 시스템 규모
2단계 개략적 설계안 제시 및 동의 구하기
- 분산 시스템에서 유일성이 보장되는 ID 생성 방법
- 다중 마스터 복제(multi-master replication)
- UUID(Universally Unique Identifier)
- 티켓 서버(ticket server)
- 트위터 스노플레이크(twitter snowflake) 접근법
- 데이터 베이스의 auto_increment 기능을 활용한다.
- 증가 값은 k만큼 증가
- k = 현재 사용 중인 데이터베이스 서버 수
- 단점
- 여러 데이터 센터에 걸쳐 규모를 확장하기는 어렵다.
- ID 유일성은 보장되지만, 시간 흐름에 맞추어 커지도록 하기에는 힘들다.
- 서버 추가나 삭제할 때에도 잘 동작하기 힘들다.
- 컴퓨터 시스템에 저장되는 정보를 유일하게 식별하기 위한 128비트 수
- 서버 간 조율 없이 독립적으로 생성 가능
- 각 웹 서버는 별도 ID 생성기로 독립적인 ID 생성이 가능하다.
- 장점
- UUID 만드는 것이 간단하고, 동기화 이슈도 없다.
- 규모 확장이 간단하다.
- 단점
- ID가 128비트이기 때문에 길다.
- ID 시간순 정렬이 어렵다.
- ID에 숫자가 아닌 값이 포함된다.
- auto_increment 기능을 갖춘 데이터베이스 서버(티켓 서버)를 중앙 집중형으로 하나만 사용한다.
- 장점
- 유일성이 보장되는 숫자 ID를 간단하게 만들 수 있다.
- 규모가 적은 애플리케이션에 적합
- 단점
- 티켓 서버가 SPOF(Single-Point-of-Failure)
- 장애가 발생하면, 해당 서버를 사용하는 모든 시스템에 영향을 끼친다.
- ID를 바로 생성하기 전에, divide and conquer 적용
- sign : 음수, 양수 구분
- timestamp : 기원 시각(epoch) 이후로 몇 밀리초가 경과했는지 나타내는 값
- 데이터센터 ID
- 서버 ID
- 일련번호 : 각 서버에서 ID 생성할 때마다 일련 번호를 1씩 증가