인프런 커뮤니티 질문&답변

진짜 잘하고싶다님의 프로필 이미지

작성한 질문수

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

Pessimistic Lock 활용해보기

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

작성

·

818

·

수정됨

1

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

 

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

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

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

항상 감사합니다!

 

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

답변 1

2

최상용님의 프로필 이미지
최상용
지식공유자

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

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

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

감사합니다.

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

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

진짜진짜 감사합니다!