inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

재고시스템으로 알아보는 동시성이슈 해결방법

Named Lock 활용해보기

동시성 제어 방법 채택 순서

1005

김찬

작성한 질문수 10

0

안녕하세요

강의를 듣던 중 궁금함이 생겨서 질문드립니다.

msa 환경에서, 레디스를 사용할 수 있는 상황이라면 레디스를 사용하는 것이 제일 좋은 방법인가요? 아니면 db락을 사용하는 것이 더 좋을 수도 있나요? 만약 db락을 사용하는 것이 더 좋을 수도 있다면, 그 상황은 어떤 상황이 있을까요?

java spring 동시성

답변 2

1

최상용

김찬님 안녕하세요.
레이스컨디션이 많이 일어나지 않는 상황이라면 optimistic lock 이 더 효과적일 수 있습니다.
optimistic lock 으로는 해결이 안되는 상황일때 (예를들어 새로운 데이터를 삽입할 때) 는 분산락을 사용할 수 있습니다.
이 경우에는 이미 운영중인 레디스가 있고 레디스를 운영할 수 있는 인원이 있다면 레디스를 사용하는 것이 좋은 방법이 될 수 있습니다.
하지만 운영중인 레디스가 없으며 레디스를 운영할 수 있는 인원이 없다면 db 를 사용하는것이 더 좋은선택이 될 수 있을 것 같습니다.

감사합니다.

0

김찬

답변 감사드립니다

0

Jerry

새로운 데이터를 삽입할때 낙관락으로 해결이 왜 안되는지 설명해주실 수 있으실까요?

2

최상용

jhj13062004 님 낙관적락은 기존에 존재하던 데이터의 버전을 활용하여 동시성을 제어하는 방법입니다. 새로운 데이터를 삽입할 때는 기준을 삼을 데이터가 존재하지 않기때문에 해결이 안된다고 하였습니다.

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴이에요. 동시성 제어 방법에 대한 궁금증에 대해 답변해드릴게요.

레디스와 DB 락 모두 동시성 제어에 사용될 수 있는 방법 중 하나입니다. 하지만 어떤 방법을 채택해야 할지는 상황에 따라 다를 수 있습니다.

일반적으로 레디스는 인메모리 데이터베이스이기 때문에 높은 처리량과 낮은 지연 시간을 제공합니다. 따라서 많은 동시 요청을 처리해야 하는 시스템이라면, 레디스를 사용하여 동시성 제어를 하는 것이 더 효율적일 수 있습니다.

반면에 DB 락은 데이터의 consistency를 보장하면서 동시에 데이터 접근을 제어할 수 있는 방법입니다. DB 락은 일반적으로 트랜잭션이나 레코드 레벨에서 사용되며, 데이터베이스에서 처리해야 할 복잡한 로직이 있는 경우에 적합합니다.

따라서, 동시성 제어 방법은 시스템의 특성과 요구사항에 따라 다르게 결정되어야 하며, 단순한 상황에 따라 “레디스를 사용하는 것이 제일 좋은 방법”이거나 “DB 락을 사용하는 것이 더 좋은 경우”로 일반화할 수는 없습니다.

동시성 제어 방법을 결정할 때는 시스템의 특성, 처리량, 지연 시간 요구사항, 데이터 일관성 등을 고려하여 적절한 방법을 선택하시면 될 것 같아요. 추가적인 질문이 있다면 언제든지 물어보세요. 좋은 하루 되세요~!

레디선 테스트코드에서 채널이름은 없어도 되는건가요?

0

39

2

낙관적 락을 사용할 떄 차이점

0

118

2

동시성 검증 코드에 관한 문의

0

89

2

단일연산

0

69

2

낙관적락vs. 레디스락

0

105

2

안녕하세요. 레디슨 질문있습니다..!!

0

65

2

@Lock(OPTIMISTIC)이 필요한 이유

0

88

2

get_lock 의 timeout이 3000초 이던데 너무 긴거 아닌가요?

0

128

2

DataSource Hikari 사용 이유

0

142

2

saveAndFlush 사용 이유 문의

0

111

3

비관적 락 VS 네임드 락

0

156

3

application.yaml 에 redis 정보

0

97

2

왜 클래스 이름에 Facade 가 붙나요?

0

180

2

@Transactional 으로 인한 동시성 문제 발생 원인이 궁금합니다.

0

216

2

@modifying 이용한 동시성 제어

0

166

2

DB락과 분산락

0

259

2

NamedLock 테스트 실패

0

186

2

테스트에서 트랜잭션 어노테이션 질문 있습니다.

0

170

2

optimistic Lock 재시도 질문입니다.

0

229

2

낙관적 락 테스트 실패

0

239

2

오류?

0

1624

4

LettureLockStockFacadeTest에서 오류가 발생합니다.

1

266

2

Pessimistic Lock 전체 테스트 오류 문의

0

357

3

비관적 락 vs 레디스(Lettuce)락 비교 관련 질문

0

456

2