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

봄봄봄님의 프로필 이미지

작성한 질문수

실습으로 배우는 선착순 이벤트 시스템

발급가능한 쿠폰개수를 1인당 1개로 제한하기

동시성제어

작성

·

713

0

안녕하세요 강의를 듣다가 궁금증이 생겼는데요. kafka는 메시지를 하나씩 처리하기 때문에 동시성 제어도 가능할 것이라고 이해했는데 그렇다면 여기서 레디스를 사용하지 않더라도 카프카만 사용해도 동시성과 관련된 데이터 정합성을 보장할 수 있는건가요?

답변 2

1

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

봄봄봄님 안녕하세요.
말씀하신대로 카프카를 사용해서 동시성과 관련된 데이터 정합성을 보장할수도 있습니다.
컨슈머가 1대일경우에는 순차적으로 처리를 하기 때문입니다.
다만, 컨슈머가 여러대일경우엔 파티셔닝키를 잘 설정해야 하고, 파티션 개수를 늘릴때는 그에 따른 전략을 잘 설정해야 합니다.
결론적으로 봄봄봄님께서 말씀해주신 것처럼 카프카를 활용하여 동시성제어를 할 수 있습니다.
다만, 예외적인 케이스가 많이 생길 수 있어 적절한 상황과 적절한 설계를 했을 때 가능하다고 말씀 드릴 수 있을 것 같습니다.

감사합니다.

봄봄봄님의 프로필 이미지
봄봄봄
질문자

안녕하세요 최상용님 답변 감사합니다.

궁금한 점이 해결되었습니다.

최상용님 답변에서 또 궁금한 점이 생겼는데 혹시 예외사항이라면 어떤 것들이 있을까요? 키워드만 알려주신다면 제가 검색해보도록 하겠습니다.

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

  1. 카프카 파티셔닝의 동작방식

  2. 컨슈머가 여러대일때 동시성 이슈를 어떻게 보장할 것인지

  3. 파티션이 늘어났을 때 생길 수 있는 이슈가 무엇이 있을지 & 어떻게 해결할 것인지

에 대해서 생각해보시면 좋을 것 같습니다!

0

서버가 1대일때는 카프카만 써도 가능할거 같은데, 서버가 여러대일 경우에 동시성 문제가 발생될거 같네요

ex) 1번 아이디의 회원이 4번의 요청을 보내고 서버가 4대 일경우, 4개의 요청이 동시에 수행될 수 있으므로.

봄봄봄님의 프로필 이미지
봄봄봄
질문자

프로듀서 서버가 4대인경우를 말씀하신건가요? 결국 컨슈머는 메시지를 하나씩 처리한다면 앞단에서 동시에 메시지를 여러개 발행해도 괜찮지 않나요?

 

제가 이해를 잘 못했는데 혹시 예시를 조금더 구체적으로 들어주신다면 감사하겠습니다!