티스토리 뷰

Redis

동시성 문제(Redisson 라이브러리)

장진혁 2023. 4. 19. 13:06
현재 티켓 예매 서비스 프로젝트에서 Redis캐시를 사용하고 있다.
지금은 서버 한개로 운영중이고 추후에 서버 2개 이상을 사용할 수도 있다.

그러면 서버 2개에서 오는 요청에 대해서 동시성을 해결해 줘야 할거 같다.

동시성 문제는 여러 개의 스레드가 동시에 공유 데이터에 접근하거나 수정하려고 할때 발생한다. 

동시성 문제를 해결하기 위한 방법
  1. Locking(잠금)
    • Locking은 여러 스레드 또는 프로세스가 동시에 접근하지 못하도록 공유 데이터에 잠금을 거는 것이다.
    • Locking은 다른 스레드나 프로세스가 잠금을 기다리는 동안 대기하므로 성능 이슈가 발생할 수 있다.
  2. Atomic Operations (원자적 연산)
    • Atomic Operations는 공유 데이터를 안전하게 수정할 수 있는 원자적인(Atomic) 연산을 제공한다.
    • AtomicInteger 클래스는 int형 변수를 안전하게 증가, 감소시킬 수 있는 원자적 연산을 제공
    • Atomic Operations는 Locking보다 빠르게 작동하지만, 일부 복잡한 연산은 구현이 어렵다.
  3. Transaction (트랜잭션)
    • 모든 수정 작업을 원자적으로 실행하고 성공하면 모두 반영하고, 실패하면 모두 원상복구한다.
  4. Message Queue (메시지 큐)
    • 공유 데이터에 접근할 필요 없이 메시지를 보내고 받는 방식으로 동시성 문제를 해결합니다. 작업이 처리될 때마다 새로운 메시지를 보내고, 이를 처리하는 다른 프로세스나 노드에서 메시지를 받아 작업을 처리한다.
트랜잭션과 락에 대해서는 이전에 학습하고 리뷰하였고
오늘은 Redisson Lock에 대해서 리뷰 할려고 한다.

https://jjinhyeok.tistory.com/72

 

트랜잭션 격리수준, 비관적 락

오늘 H2 DB에서 RDS Mysql로 교체를 했는데 오류율이 70%이상 나타나고 LockAcquisitionException 오류가 나온다. 밑에 있는 코드는 예매하기 버튼을 누르면 사용자 정보와 예매정보가 데이터 베이스에 저장

jjinhyeok.tistory.com

Redis를 활용하는 방법이 있다.
밑에 있는 블로그는 내가 참고해서 학습할 것이다.

https://dkswnkk.tistory.com/681

 

자바에서 동시성을 해결하는 다양한 방법과 Redis의 분산락

이번 포스팅은 사전지식으로 운영체제의 동기화 이론에 대해 알고 있어야 손쉽게 이해할 수 있으므로, 헷갈리시는 분들은 아래 포스팅을 먼저 읽고 이번 포스팅을 읽어주시면 감사하겠습니다.

dkswnkk.tistory.com

 

'Redis' 카테고리의 다른 글

Redis 장애 상태일때 DB조회 하도록 수정하기  (0) 2023.04.20
프로젝트 Redis 캐시 적용하기  (0) 2023.04.09
Redis 캐시 사용해보기  (0) 2023.04.09
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함