inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

Pessimistic Lock 활용해보기

좋아요나 조회수 등 동시성 처리 질문입니다.

943

진짜 잘하고싶다

작성한 질문수 30

1

사용자가 많지 않고 일반 커뮤니티 같은 경우에는 좋아요 개수가 많이 몰릴 일이 없다고 생각해서 PessimisticLock을 적용하려고 합니다.

 

제가 생각했을 땐 인스타나 그런 대규모 사이트의 좋아요는 PessimisticLock을 적용하면 성능 저하가 뚜렷하게 나타난다고 생각합니다. -> 레디스 사용이 베스트

토이프로젝트 규모의 SNS는 PessimisticLock으로 구현하는게 비용도 들지 않고 데이터 정합성이 보장된다고 판단했습니다.

혹시 제가 틀린 거나 더 나은 방법이 있을까요?

항상 감사합니다!

 

아 추가로 newFixedThreadPool은 왜 32로 설정하는지도 궁금합니다!!

java spring 동시성

답변 1

2

최상용

dbsquddlfz 님 안녕하세요.
말씀하신대로 토이프로젝트 규모에서는 PessimisticLock 을 이용하여 정합성을 보장할 수 있겠으며, 사용자가 많을때는 성능저하로 인하여 레디스 사용이 나을거라고 생각합니다.

다만 개인적으로 조회수 같은 데이터는 정합성을 어느정도 포기해도 되는 데이터라고 생각합니다.
이러한 데이터는 lock 을 활용하여 정확한 데이터를 맞추기보다는 근사치에 해당하는 데이터를 활용해도 될 것이라고 생각합니다.
사용자가 많은 서비스에서는 조회수같이 근사치에 해당하는 데이터를 사용할 때 hyperloglog 라는 알고리즘을 사용할 수 있습니다.

ThreadPool 의 사이즈를 32로 설정한것은 일반적인 예제에서 많이 사용하는 사이즈가 무난할 것이라고 생각되어 저도 32를 사용하였습니다.

감사합니다.

0

진짜 잘하고싶다

매번 친절하게 답변해주셔서 너무 감사합니다.

덕분에 새로운 것도 많이 배울 수 있었습니다!!

진짜진짜 감사합니다!

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

0

43

2

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

0

121

2

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

0

95

2

단일연산

0

70

2

낙관적락vs. 레디스락

0

108

2

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

0

67

2

@Lock(OPTIMISTIC)이 필요한 이유

0

90

2

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

0

132

2

DataSource Hikari 사용 이유

0

147

2

saveAndFlush 사용 이유 문의

0

113

3

비관적 락 VS 네임드 락

0

160

3

application.yaml 에 redis 정보

0

100

2

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

0

185

2

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

0

219

2

@modifying 이용한 동시성 제어

0

168

2

DB락과 분산락

0

262

2

NamedLock 테스트 실패

0

186

2

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

0

173

2

optimistic Lock 재시도 질문입니다.

0

232

2

낙관적 락 테스트 실패

0

241

2

오류?

0

1627

4

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

1

268

2

Pessimistic Lock 전체 테스트 오류 문의

0

360

3

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

0

460

2