Consistent Hashing
일관성 해싱
🎯 일관성 해싱 (보강 버전 Part 1)
1. 왜 해싱이 필요할까?
2. 해시 링(Hash Ring) 비유
3. 노드 추가/삭제 시 변화
4. 가상 노드(Virtual Node)
5. 실제 서비스 활용
6. 개발자가 얻는 이점
7. 단점도 있다
8. 대안 알고리즘도 있다
9. 그림으로 정리하기
10. 마무리: 이걸 알면 뭐가 좋을까?
11. Redis Cluster의 슬롯 개념
12. 슬롯과 일관성 해싱 비교
13. 노드 추가/삭제 시 슬롯 재분배
14. 마스터-슬레이브 구조와 고가용성
15. 데이터 조회 시 해시 태그(Hash Tag)
16. 클라이언트-서버 간 키 라우팅
17. 실제 장애 상황 시 동작
18. Redis Cluster의 장단점
19. Redis Cluster vs Consistent Hashing 총정리
20. 실무 적용 인사이트
Redis Cluster: docker-compose로 5노드 시작 → 노드 추가/삭제 튜토리얼
0) 구성 개요
1) docker-compose.yml (5노드 시작)
2) 컨테이너 기동 & 클러스터 생성
3) (선택) 슬롯 분포/건강 체크
4) 노드 추가(확장): 5 → 6 노드
4-1) compose에 새 서비스 추가
4-2) 클러스터에 노드 합류(add-node)
4-3) 리밸런싱(슬롯 재분배, reshard)
5) 노드 삭제(축소): 6 → 5 노드
5-1) 슬롯 비우기(reshard로 슬롯 이동)
5-2) del-node (클러스터에서 제거)
5-3) 컨테이너 정리
6) 장애/Failover 빠른 연습
7) Spring 연결 포인트(요약)
8) 운영 팁 (요약 체크리스트)
Spring 애플리케이션에서 Consistent Hashing/Redis Cluster 쓰는 법
1) 키 네이밍 & Hash Tag 유틸 (슬롯 고정)
2) RedisTemplate 기반 Repository (Value/Hash)
3) 멀티키 조회(MGET) & 파이프라인 (같은 슬롯에 묶어야 함)
4) Spring Cache (+ Hash Tag 포함 KeyGenerator)
5) 레이트리미터(Token Bucket) – Lua (원자적)
6) 분산락(선택: Redisson) – 임계 구역 보호
7) 세션 공유 (Spring Session)
8) 멀티키 트랜잭션(동일 슬롯 전제) & TxCallback
9) 장애/리밸런싱 중 리다이렉션 & 재시도
10) 관측성: 캐시 미스/Latency 메트릭
11) 통합 테스트 (Testcontainers로 클러스터 연결 확인)
12) 성능 팁 & 체크리스트 (짧게)
끝으로
Last updated