안녕하세요 오늘은 Redis Sentinel과 Redis Cluster 이 두 가지 기술을 비교하여
어떤 상황에서 어떤 것을 선택해야 하는지 알아보려 합니다.
1. Redis Sentinel:
Redis Sentinel은 고가용성(High Availability) 솔루션으로, 마스터-슬레이브 구조에서 사용됩니다.
주요 구성 요소:
마스터(Master): 데이터를 기록하는 주요 서버입니다.
슬레이브(Slave): 마스터 데이터를 복제하여 읽기 작업을 처리하는 보조 서버입니다.
센티넬(Sentinel): 클러스터의 상태를 모니터링하고, 장애 발생 시 자동 장애 복구 기능을 수행합니다.
동작 방식:
센티널은 주기적으로 마스터와 슬레이브 노드들의 상태를 모니터링합니다.
만약 마스터 노드에 장애가 발생하면, 센티널은 슬레이브 중 하나를 새로운 마스터로 선출합니다.
클라이언트들은 센티널을 통해 현재 마스터의 정보를 얻고, 읽기 및 쓰기 작업을 수행합니다.
주요 특징:
자동 장애 복구: 마스터 노드의 장애 시 슬레이브 노드를 자동으로 프로모션하여 서비스 중단 시간을 최소화합니다.
서비스 검색: 클라이언트에게 현재 마스터 서버 정보를 알려줍니다.
설정 가능한 쿼럼: 정상 작동 여부 판단 기준인 쿼럼 수를 설정할 수 있습니다.
한계:
단일 마스터: 하나의 마스터와 여러 개의 슬레이브만 지원합니다.
읽기 확장성 제한: 읽기 작업은 모든 요청을 마스터로 보내야 합니다.
2. Redis Cluster:
Redis Cluster는 분산 시스템으로, 성능 및 확장성 향상을 위해 여러 노드에 데이터를 분산 저장합니다.
주요 구성 요소:
클러스터 노드(Cluster Node): 데이터를 저장하고 처리하는 개별 Redis 인스턴스입니다.
슬롯(Slot): 데이터를 균등하게 분배하기 위해 전체 데이터베이스가 일정 개수의 슬롯으로 나뉩니다.
동작 방식:
클러스터는 자동으로 데이터를 다중 노드에 분산하여 저장합니다.
각 노드는 일부 슬롯에 대한 책임을 가지며, 해당 슬롯에 속하는 데이터만 관리합니다.
클라이언트들은 클러스터와 상호작용하며, 요청된 키 값의 해시 함수 결과를 기반으로 데이터가 저장된 노드를 찾습니다.
클러스터는 자체적인 복구 메커니즘을 갖추어 일부 노드의 장애 시에도 전체적인 가용성을 유지합니다.
주요 특징:
데이터 샤딩(Sharding): 데이터를 여러 노드로 분산하여 처리량 및 용량을 확장할 수 있습니다.
자체 복구 메커니즘: 일부 노드 실패 시에도 클러스터 전체적인 가용성 유지 가능합니다.
읽기 및 쓰기 확장성: 다중 노드에서 동시에 읽기 및 쓰기 작업 가능합니다.
한계:
복잡성: 구축 및 관리하는 것이 비교적 복잡할 수 있습니다.
ACID 제약사항: 일부 ACID 특징인 원자성(Atomic)과 일관성(Consistent) 보증되지 않습니다.
레디스 센티넬과 클러스터는 각각 다른 환경에서 고가용성과 확장성을 제공하기 위해 설계되었습니다.
선택은 사용 사례와 요구사항에 따라 달라질 수 있으며,
이해하고 적절하게 구현하는 것이 중요합니다.
확장성을 위해 클러스터를 선택하는 경우가 많아 예제 준비하였으니 확인하시면 도움될 것입니다.
클러스터 예제 : https://rhgustmfrh.tistory.com/49
감사합니다.
이미지 출처 : https://architecturenotes.co/redis/
'레디스' 카테고리의 다른 글
레디스를 캐시로 사용하여 조회하는것과 DB에서 데이터를 조회하는 것의 차이를 실험으로 알아보자 (0) | 2024.06.15 |
---|---|
레디스 클러스터를 활용한 데이터 관리와 스프링 부트 연동: 클러스터 구성, 노드 설정, 조회 적용 및 실습 (0) | 2023.06.16 |
스프링 부트와 레디스를 활용한 데이터 저장 및 관리: 싱글 레디스 설정, Another Redis Desktop Manager 사용, 간단한 조회 예제 (0) | 2023.06.16 |
레디스(Redis)를 활용한 네띠 채팅 프로그램 구축: 간단한 적용 방법과 실시간 메시지 저장 (0) | 2023.03.05 |
Redis를 쓰는 이유 및 장점 (0) | 2023.03.05 |
댓글