작성
·
246
·
수정됨
0
안녕하세요. 수업 잘 듣고 있습니다!
컨슈머 관련해서 궁금한 점이 생겨 질문드립니다.
제가 지금까지 이해한 내용으로는 하나의 토픽에 대해서 이벤트를 발생하면 key 값을 통해 파티션으로 분배되는 걸로 이해하고 있습니다. 그리고 하나의 토픽에 대해서 여러 컨슈머 그룹이 운영될 수 있고 별도 offset으로 관리되어 각 컨슈머 그룹에서는 이벤트에 대해서 원하는 용도로 처리될 수 있다고 하셨습니다.
이부분에서 궁금한 점이 생겼는데요.
하나의 이벤트에 대해서는 한개의 파티션에 하나의 레코드만 생성되는데, 여러 컨슈머 그룹에서 해당 이벤트를 다 가져가는 경우는 발생할 수 없는 거 같아서 헷갈리는 거 같습니다.
이벤트 -> 토픽에서 특정 파티션 선정 -> 파티션에 레코드 등록 -> 컨슈머
이런 형태로 진행되면 한개의 이벤트는 어떻게 여러 컨슈머 그룹에서 독립적으로 처리할 수 있지라는 의문이 생기게 되었습니다.
혹시 하나의 이벤트에 대해서 레코드가 여러개 생성될 수 있는 걸까요??
아니면 하나의 컨슈머 그룹에서는 하나의 파티션만 할당될 수 잇지만 여러 컨슈머 그룹인 경우에는 하나의 파티션에 대해서 그룹 당 하나의 컨슈머가 할당이 가능한것일까요??
답변 2
0
안녕하세요!
프로듀서가 토픽으로 레코드를 보내면 동일한 메시지 키가 있는 레코드는 동일한 파티션 번호로 전송하게 됩니다. 보통 하나의 레코드에는 하나의 이벤트를 담는게 일반적인데요. 상황에 따라 레코드에 여러 데이터를 넣는 경우도 있지만 이것은 비즈니스 요건에 따라 다릅니다. 하지만 기본적으로 하나의 레코드에는 내부적으로 타임스탬프, 메시지 키 등 이벤트를 구분하는 중요한 요소가 있기 때문에 하나의 이벤트를 담는 것이 좋습니다.
그리고 컨슈머는 특정 토픽을 구독하게 되며 할당된 파티션으로부터 레코드를 가져와서 처리하게 됩니다. 여러 파티션에 하나의 컨슈머가 매칭될 수도 있고, 여러 파티션(n개)에 여러 컨슈머(n개)가 매칭될 수 도 있습니다.
0