Redis-Distribution-Lock
설명
- DB 를 통한 Locking 까지 도달하기 전에, Controller (API, Kafka Listener) 단계에서 Trasaction 마다 Locking 한다.
- 물론, Transaction Lock 을 위한 Key 는 비즈니스 로직에서 정의 해야한다. (User_id, 획득한 Session 등…)
- 두 가지 Time Limit 이 설정 필요함
- Wait Time : 새로 인입한 트랜잭션의 Lock이 선점되있을 경우, 기다리는 시간
- Release Time : 획득한 Lock 을 유효시간 동안만 유지하고 해제하게 됨
Sequence Diagram
관련 문서
주의
Release Time 을 직접 제어 하기 때문에 RDB 만큼 절대적으로 제어할 수 없음
동일 트랜잭션이 밀려들어오는 상황을 선제적으로 제어 하는 정도로만 이해하고 사용하자!