kaonmir
시리즈
SAA
DOP
System Design Interview
Linux
ETC
Share
Sign In
Home
Kaonmir (손성훈)
Copy & Translate
시리즈
SAA
후기
시험 소개 & 꿀팁
Terminology
Region & Availability Zone
Budget
IAM
EC2 - Fundamentals
EC2 - SAA Level
EC2 Storage
ELB & ASG
RDS / Aurora / ElastiCache
S3
CloudFront & Global Accelerator
Route 53
Storage Extras
Decoupling
Container
Serverless
Database
Monitoring, Troubleshooting & Audit
IAM Advanced
Security & Encryption
VPC
Disaster Recovery & Migrations
Ohter Services
기술 백서 총 모음
기술 백서(White paper)
DOP
CodeCommit, CodeBuild, CodeDeploy
CodePipeline, CodeStar, Jenkins
CloudFormation - Fundamentals
CloudFormation - DOP Level
Elastic Beanstalk
Lambda & Step Function & API Gateway
ECS & ECR & OpsWorks
Kinesis
CloudWatch
CloudTrail & X-Ray & ElasticSearch & Tagging
SSM & Config & Service Catalog & Inspector
Other Services
Auto Scaling Group (ASG)
DynamoDB & S3
Multi AZ & Multi Region & Multi Account
AWS Organizations & On-Premise Strategy
Disaster Recovery (DR)
서비스별 기본 배포 전략 비교
CodeDeploy appspec hook
System Design Interview
사용자 수에 따른 규모 확장성
개략적인 규모 추정
시스템 설계 면접 공략법
처리율 제한 장치
안정 해시
키-값 저장소
분산 시스템을 위한 유일 ID 생성기
URL 단축기
웹 크롤러
알림 시스템
뉴스 피드 시스템
채팅 시스템
검색어 자동완성 시스템
유튜브
구글 드라이브
Linux
ETC
AI를 더 잘 쓰기 위한 IT 용어
Subscribe
안정 해시
해시 키 재비치(rehash) 문제
보편적인 해시 함수 :
serverIndex = hash(key) % N
(N은 서버 개수)
서버의 개수가 바뀌면 serverIndex를 모두 다시 계산 ⇒ 대규모 캐시 미스가 발생
안정 해시(consistant hash)
해시 함수로 SHA-1를 사용한다고 가정하면 총 해시 공간은 0~
2^{160}
-1
서버 : 서버의 고유한 값(IP, 이름 등)을 해싱해서 이 공간 어딘가에 배치한다.
키 : 키를 해싱해서 이 공간 어딘가에 배치한다.
해시 공간의 앞 뒤를 이어붙이면 아래 그림처럼 된다.
그리고 모든 키값은 자기 바로 다음에 나오는 서버(노드)에 할당된다.
서버 추가 : 오른쪽 그림과 같이 주황색 서버가 추가되면 파랑과 주황 사이의 키값들만 재배치된다.
서버 제거 : 주황색 서버가 제거된다면, 주황색 서버에 배치된 키들만 재배치된다.
문제점
파티션(서버 사이의 해시 공간)이 균일하지 않다.
서버를 추가 또는 삭제할 경우 파티션의 크기가 급격하게 달라진다.
키값이 균등하게 분포하지 않는다.
⇒ 가상 노드 또는 복제 기법을 사용해 해결한다.
가상 노드
하나의 서버를 여러 해시 공간에 가상으로 두는 방법이다.
가상 노드의 개수가 많아질 수록 표준 편차가 줄어들어 키의 분포는 점점 균등해진다.
SHA-1에서 가상 노드가 200개 일 때 표준 편차가 평균의 5%로 제일 낮았다.
재배치 방법은 안정 해시와 비슷하게 가상 노드 사이의 키들만 재배치한다.
표준 편차와 노드의 저장 공간 사이의 트레이드 오프가 필요하다.
장점
재배치되는 키의 수가 최소화된다.
데이터가 균등하게 분포하므로 수평적 규모 확장에 용이하다.
특정 노드(샤드)에 접근이 몰리는 핫스팟 문제를 줄일 수 있다.
용례
AWS DynamoDB 파티셔닝 관련 컴포넌트
Apache Cassandra 클러스터의 데이터 파티셔닝
디스코드 채팅 앱
추가
데이터를 여러 대의 노드에 저장하는 방법이다. 키의 위치 다음 N개의 노드에 데이터를 저장한다.
Made with SlashPage