좌석 선점 과정

장숭혁·2024년 9월 26일
0

TIL작성

목록 보기
59/60

동시성 처리와 성능 최적화

  • Redis를 사용하는 이유
    메모리 기반 데이터 저장소이므로, 좌석선점과 같은 짧은 시간동안 유지하는 데이터를 빠르게 저장 조회가 가능하다. 응답속도를 높일 수 있다.

  • 동시성 제어
    좌석이 중복으로 예매되지 않도록 동시성 처리를 한다. 분산 락과 비관적 락을 Redis를 통해 구현해 낼 수 있다. ( 낙관적 락은 동시성 문제가 발생하되 많이 일어날 것 같지 않은 환경에서 사용된다. )

  • 좌석 선점 타이머 관리
    Redis는 TTL(Time-To-Live) 기능을 이용해 좌석을 선점하고 자동으로 선점이 해제 되도록 할 수 있다. ( 날짜-시간-좌석 리스트 를 선택 후 좌석 선택 버튼을 누르면 작동되도록 할 것임)

  • 분산 시스템 환경에서 일관성
    분산 환경에서 여러 서버가 동일한 데이터를 실시간으로 공유할 수 있게 돕는다. 중앙화된 메모리 기반 저장소에서 좌석 상태를 공유하고 일관성을 유지할 수 있다.

분산 락

  • 여러 대의 서버, 프로세스가 동시에 공유 자원에 접근하는 것을 제어하기 위해 사용한다.
    경쟁 상태를 방지 하고자 사용된다. 데이터의 무결성을 보장하고 동시성 문제를 해결한다.

    • 데이터 무결성
    • 경쟁 상태 방지(순서 보장)
    • 중복 작업 방지
  • 한번에 하나의 노드만 특정 자원에 접근 가능하다.

  • 데드락을 방지 할 수 있다. ( 락 획득 후 일정 시간 내 해제되지 않으면 해제되도록 설정 가능 )

    • 락에 TTL을 설정함
  • 분산 환경에서 락 구현

비관적 락

  • 데이터에 대한 충돌이 발생할 가능성이 높다고 가정한다. 다른 트랜잭션이 해당 데이터에 접근하지 못하도록 잠그는 방식이다.

    • 트랜잭션이 시작될 때, 락을 획득하여 해당 데이터를 독점적으로 점유한다.
    • 동시성 충돌을 완벽히 방지한다.
    • 데이터 무결성을 보장한다.
  • 다른 트랜잭션이 대기 상태에 놓여 성능이 저하된다.

profile
코딩 기록

0개의 댓글

관련 채용 정보