Kafka 동기화 문제에 대해 질문이 있습니다.
555
작성한 질문수 6
항상 좋은 강의 감사합니다. 궁금한 점이 있어 질문을 남깁니다.
Kafka를 이용해서 멀티 서버에서 하나의 DB를 사용하여 동시성 문제를 해결하는 것을 이해했습니다.
상품 제고가 0이 되면 더 이상 주문을 못하도록 하게 하고 싶습니다. 하지만 Kafka 요청을 통해 비동기로 주문을 하기 때문에 주문을 신청한 순간에는 재고가 있어 주문이 되었지만 Kafka의 모든 처리를 하고 나니 재고가 0이 되어 사실 주문할 수 없는 상황이었습니다. 이런 상황이 발생할 수도 있지 않나요??
이럴 때는 어떻게 대처를 해야 하나요??
쓰기 작업과 읽기 작업에서 동기화 문제는 어떻게 처리할 수 있나요?
답변 1
1
안녕하세요, 인프런 AI 인턴이에요. Kafka를 이용한 동기화 문제에 대한 질문이시네요.
Kafka는 비동기식 메시징 시스템으로, 메시지가 전송되는 시점과 수신되는 시점이 다를 수 있습니다. 이로 인해 주문을 신청한 시점에는 재고가 충분하지만, 실제 처리가 완료되는 순간에는 재고가 0이 되었다는 상황이 발생할 수 있습니다.
이러한 상황에 대처하기 위해서는 다음과 같은 방법들을 고려할 수 있습니다:
트랜잭션 처리: Kafka에서 데이터를 송수신할 때, Kafka의 트랜잭션을 사용하여 데이터의 일관성을 보장할 수 있습니다. 주문을 신청할 때와 재고를 업데이트할 때 동일한 트랜잭션에 포함시켜서 처리하면 재고가 0인 상황을 방지할 수 있습니다.
상태 체크: 주문을 처리하기 전에, 주문을 신청한 시점에서 재고의 상태를 확인하는 과정을 추가할 수 있습니다. 주문 요청을 받은 서버에서 재고를 조회하여, 0보다 큰지 먼저 확인한 뒤에 주문을 처리하도록 구현합니다.
예외 처리: 재고가 0인 상황이 발생했을 때, 예외를 발생시켜서 주문을 거부하는 방법을 선택할 수도 있습니다. 이 경우, 예외를 정확히 처리하고 클라이언트에게 적절한 알림을 제공해야 합니다.
물론 이러한 방법들은 상황에 따라 다를 수 있으며, 어떤 방법을 선택하느냐에 따라 구현 방법이 달라질 수 있습니다. 비동기 처리에서의 동기화 문제는 제대로 처리되지 않으면 예기치 않은 문제를 발생시킬 수 있으므로, 여러 측면을 고려하여 처리해야 합니다.
더 자세한 내용이나 실제 구현 방법에 대해서는 Kafka의 공식 문서나 관련 자료를 참고하시는 것을 권장드립니다. 많은 도움이 되길 바라요. 좋은 하루 되세요!
kafka 업데이트 강의 듣고 시포요
0
85
1
강의 교안
0
73
1
마이크로서비스간 통신 시, 인증 처리
0
79
1
api gateway 에서 인증 처리
0
65
1
섹션 19 질문드립니다
0
53
1
강의 자료 업데이트
0
82
1
부하분산 강의 섹션
0
57
1
강의자료는 어디에서?
0
71
1
강의 자료는 어디서 다운 받을 수 있나요?
0
110
1
전체 사용자 조회시 오류
0
58
1
혹시 pk 외 별도의 id 를 부여한 이유가 있을까요 ??
0
110
2
학습 방향
0
95
2
카프카 커넥터 사용 목적 문의
0
85
2
kafka 강의
0
108
2
서비스 디스커버리 종류
0
87
2
강의 자료에 대해서 궁금해요
0
116
2
GlobalFilter, LoggingFilter가 동작하지 않습니다.
0
90
2
Kafka Source Connect 버전 에러
0
85
2
소스커넥터는 사용안한 거 맞죠?
0
81
2
강의자료 업데이트 문의
0
95
2
강의에서 BCryptPasswordEncoder 에 역할(5-2)
0
56
1
강의 업데이트 계획이 궁금합니다.
0
112
2
MSA 애플리케이션에 Spring Web과 Spring Data JPA를 사용하는 것이 바람직한지 궁금합니다. (MSA 설계와 관련된 질문입니다)
0
161
2
어떤 것이 업데이트 된 건가요?
0
164
2





