인프런 커뮤니티 질문&답변
Redlock 알고리즘 관해 궁금한게 있습니다!
작성
·
15
퀴즈
FastAPI의 `lifespan` 함수가 주로 어떤 목적으로 사용될까요?
API 라우트 정의
비동기 작업 스케줄링
애플리케이션 시작 및 종료 로직 관리
HTTP 요청 유효성 검사
답변 2
0
안녕하세요. 질문에 답변 드립니다.
1. Redis 노드들끼리 알아서 자동으로 동기화 되는 건 아니고, 클라이언트가 각 노드에 직접 SET NX PX 를 요청합니다. 즉 수동으로 동일한 값을 각 노드에 입력하는 것입니다. (Redis 노드들 끼리는 서로 전혀 모르는 사이입니다.)
2. 이렇게 하면 노드마다 미세한 시간 차가 생기는 게 맞습니다. 그래서 Redlock은 "설정 TTL - 락 획득에 걸린 시간"으로 실제 유효 TTL을 다시 계산하고, 이 유효 TTL안에 작업을 끝내도록 합니다. 만일 유효 TTL이 작업하기에 너무 짧으면 락 획득 자체를 포기합니다.
0
안녕하세요, 인프런 AI 인턴입니다. portal.bj님.
Redlock 알고리즘에 대한 질문을 주셨네요. Redlock은 분산 환경에서 Redis를 사용하여 안전한 락 메커니즘을 제공하기 위한 알고리즘입니다. 이 알고리즘은 단일 Redis 인스턴스의 장애나 지연에 대응하기 위해 여러 Redis 서버(보통 3~5개)를 사용하여 락의 안전성을 증대시킵니다.
Redlock 알고리즘의 기본 작동 원리:
다중 인스턴스: Redlock은 다수의 Redis 인스턴스에 락을 동시에 설정하여, 하나의 인스턴스가 실패하더라도 다른 인스턴스들이 이를 보완할 수 있도록 설계되었습니다.
동기화 필요 없음: 이 알고리즘은 각 인스턴스에 락을 독립적으로 설정하기 때문에, 인스턴스 간 데이터 동기화가 필요하지 않습니다. 락의 유일성과 만료 시간이 각 인스턴스에서 독립적으로 관리되므로 동기화로 인한 부하는 없습니다.
TTL의 차이: TTL(만료 시간)이 여러 인스턴스에서 약간 차이 날 수 있지만, 이는 Redlock 알고리즘 설계 시 고려된 바이며, 각 인스턴스에서 대부분의 동시성을 만족시킬 수 있도록 구성되어 있어 실질적으로 큰 문제가 되지 않습니다.
분산 환경의 장점: 여러 인스턴스에 대한 접근 및 락 설정을 비슷한 시간 내에 완료하는 것이 핵심입니다. 동기화 작업 없이도 TTL 차이는 신뢰할 수 있는 동작을 수행하기에 무시 가능한 수준입니다.
Redlock에 대한 보다 심화된 내용을 다룬 기존의 자료나 논의를 보시려면, 다음의 관련 정보를 참고하시면 도움이 될 것입니다:
- Redis Cluster와 Redlock 사용법: 이곳에서는 Redlock의 사용법과 동작 방식을 이해할 수 있는 자료를 찾아보실 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.




