-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: Redis 장애 대응 - 분산 락 및 캐시 리포지토리 Fallback 구현 #320
Comments
toychip
added a commit
that referenced
this issue
Jan 2, 2025
캐시 저장소 공통 인터페이스 정의 (get, set, exists, delete)
toychip
added a commit
that referenced
this issue
Jan 2, 2025
- RedisCacheRepository: Redis를 통해 캐시 데이터 저장 및 조회 - LocalCacheRepository: ConcurrentHashMap 기반 로컬 캐시 구현 - CacheRepositoryImpl: Redis 우선 사용, 실패 시 LocalCache로 Fallback - Write-Through 전략 적용 (Redis와 Local 동시 저장)
toychip
added a commit
that referenced
this issue
Jan 2, 2025
- LocalCache 데이터를 주기적으로 Redis로 동기화 - 비동기 처리를 통해 성능 병목 현상 방지 - 배치 사이즈를 작게 설정하여 처리 성능 최적화
toychip
added a commit
that referenced
this issue
Jan 2, 2025
- 분산 락 관련 공통 인터페이스 정의 (tryLock, unlock)
toychip
added a commit
that referenced
this issue
Jan 2, 2025
- RedissonLockManager: Redis 기반 분산 락 구현 - LocalLockManager: JVM 내 ReentrantLock 기반 로컬 락 구현
toychip
added a commit
that referenced
this issue
Jan 2, 2025
- Local Lock 데이터를 주기적으로 Redis로 동기화 - 비동기 처리로 병목 현상 방지 및 성능 최적화
toychip
added a commit
that referenced
this issue
Jan 2, 2025
- AOP를 통해 DistributedLockService 사용하도록 변경 - Redis Lock 실패 시 자동으로 Local Lock으로 전환
toychip
added a commit
that referenced
this issue
Jan 2, 2025
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
🤷 구현할 기능
Redis 장애 발생 시 Fallback 메커니즘을 적용하여 서비스의 안정성을 확보합니다.
ReentrantLock
을 사용하여 동시성 문제를 해결합니다.ConcurrentHashMap
을 사용한 로컬 캐시로 자동 전환합니다.🔨 상세 작업 내용
1. 공통 인터페이스 정의
get
,set
,exists
,delete
메서드를 포함한 캐시 관리 인터페이스 정의tryLock
,unlock
메서드를 포함한 분산 락 관리 인터페이스 정의2. Redis 및 Local 구현체 추가
StringRedisTemplate
을 사용하여 Redis를 통해 캐시를 저장 및 관리ConcurrentHashMap
기반으로 JVM 내 캐시를 저장 및 관리RedissonClient
를 사용하여 Redis에서 분산 락 구현ReentrantLock
을 사용하여 JVM 내 로컬 락 구현3. Fallback 메커니즘 구현
CacheRepositoryImpl:
DistributedLockService:
4. AOP 적용 (분산 락)
@DistributedLock
어노테이션이 적용된 메서드 실행 시 분산 락 적용5. 데이터 동기화 (Write-Through 및 비동기 배치 처리)
CacheSynchronizationService:
@Scheduled
와@Async
를 사용해 LocalCache 데이터를 Redis로 동기화LockSynchronizationService:
@Scheduled
와@Async
를 사용해 LocalLock 데이터를 Redis로 동기화📄 참고 사항
restart: always
설정을 통해 Redis 컨테이너는 자동으로 복구됩니다.⏰ 예상 소요 기간
1일
The text was updated successfully, but these errors were encountered: