좋아요 수 구현 PessimisticLock1 질문
안녕하세요 강사님 강의 잘 듣고 있습니다.
아래 내용이 궁금하여 질문 드립니다.
질문:
PessimisticLock1에서 주석 달아놓으신
"트래픽이 몰리는 상황에서 유실될 수 있으니
게시글 생성 시점에 미리 0으로 초기화해둘 수 있다"
는 부분에서 어떤 이유로 데이터가 유실이 될 수 있는지 궁금한데 예시나 상황에 대해서 추가 설명해주실 수 있을까요?!
감사합니다.
回答 2
1
선웅님, 안녕하세요!
int result = articleLikeCountRepository.increase(articleId);
if (result == 0) {
// 최초 요청 시에는 update 되는 레코드가 없으므로, 1로 초기화한다.
// 트래픽이 순식간에 몰릴 수 있는 상황에는 유실될 수 있으므로, 게시글 생성 시점에 미리 0으로 초기화 해둘 수도 있다.
articleLikeCountRepository.save(
ArticleLikeCount.init(articleId, 1L)
);
}위 코드에서 2개의 요청이
int result = articleLikeCountRepository.increase(articleId);위 코드를 "동시"에 호출한 상황을 가정해보겠습니다.
아직 ArticleLikeCount가 생성된 적이 없다면, 두 요청은 모두 result가 0으로 응답됩니다.
if (result == 0)두 요청은 위 조건이 모두 true로 들어가면서 ArticleLikeCount 1로 초기화하는 코드를 두 번 수행하게 됩니다.
그러면 1개의 요청은 유실될 수 있는 것입니다!
consumer에서 에러가 발생할 경우 데이터 유실 문의
0
39
2
게시글 테스트 데이터 삽입
0
44
2
정렬, 필터, 검색 등의 조건이 붙을 경우 최적화할 수 있는 방법이 무엇이 있을까요?
0
97
2
좋아요 기능 정합성 보장 방법
0
90
2
좋아요 동시성처리 최적의 선택?
1
115
2
프론트엔드 msa 환경 api 주소 통합? 과 서버끼리 통신 방식에대해
0
85
2
안녕하세요 무한스크롤 강의듣다가 질문이 있습니다.
0
54
1
조회수 조회 로직 질문
1
64
2
비로그인 유저도 어뷰징 방지 정책
1
63
2
CommentServiceTest의 테스트 로직 질문
0
50
2
무한 스크롤 방식에서 페이지 번호 방식 쿼리의 문제점 의문
1
69
2
path 쿼리 관련 질문드립니다!
0
55
2
antigravity 에디터를 쓰신다면 종료해주세요
1
122
0
프로젝트 구조
0
83
2
article_like_count api test
0
70
2
이벤트 페이로드 객체의 생성 방식이 팩토리 메서드 패턴이 아닌 빌더 패턴인 이유가 궁금합니다!.
0
101
2
[33. 좋아요 수 구현] 에서 테스트 하는 화면 동시성 문제
0
88
2
findByPath에서 articleId로도 검색을 해야 할 것 같아요.
0
87
3
jpa ddl-auto none을 하는 이유와 join 방법
0
92
2
팩터리 메소드와 response 객체 사용 이유가 궁금합니다!
0
85
2
커서 기반 페이지네이션 과 무한 스크롤링
0
97
2
게시글 생성 로직에서 오류 발생시 redis 게시글 수 되돌리기
0
95
2
멀티 모듈이 아닌 MSA 환경에서 common
0
146
2
2Depth 강의 도중 궁금한 점 있어요!!
0
73
2

