0

카프카 (Kafka)의 특정 주제에서 데이터를 소비하는 카프카 소비자 프로젝트가 있습니다. 레코드의 90 %는 처리 되 자마자 처리되지만 일부 레코드 (10 %)를 처리하는 지연이 있습니다.카프카 (Kafka) 두 개의 다른 체크 포인트가있는 한 명의 소비자

이러한 기록을 지연시켜야 기록을 커밋 할 수 없으므로 Kafka가 새 노드에 파티션을 재 할당 할 수 있습니다. 이를 방지하기 위해 동일한 주제를 두 번 읽고 두 번째 소비자에서 가져 오는 데이터 부분을 지연시킬 수는 있지만 두 번 더 직렬화가 필요하므로 오버 헤드가 발생합니다.

단일 소비자를 사용하지만 Kafka 소비자와 두 개의 별도 커밋이 가능합니까? 기본적으로 두 개의 서로 다른 소비자가 커밋 측면에서 비슷하지만 consumer.poll이 단일 소비자로부터 호출되지만 각 일괄 처리에는 두 개의 consumer.commitSync이 있습니다. 추가 비 직렬화 및 네트워크 비용을 피할 수 있도록 도와 드리겠습니다.

+0

10 % 레코드를 별도의 주제로 넣을 수 있습니까? – amethystic

+0

@amethystic 불행히도 없습니다. –

답변

0

아래에서 언급 한 작업을 수행하기 위해 수행 할 수있는 작업은 다음과 같습니다.

  • 두 가지 주제 (T1, T2) 주제 T1의 모든 메시지 (90 %)을 밀어 주제 T2에서 모든 메시지를 10 % 휴식을 갖는 파이프 라인을 만듭니다.

  • 소비자를 시작할 때마다 폴링 간격, batchSize 및 배치 시간 초과를 쉽게 전달할 수 있습니다.

  • 로직을 찾거나 두 번째 주제 소비가 시간 기반인지 확인한 다음 필요할 때 소비자 주제 T2를 시작하고 중지 할 cron을 예약하십시오.
  • 소비자 그룹과 관련하여 두 그룹을 동일한 그룹 또는 무관심하게 배치 할 수 있습니다. 그것은 완전히 선택입니다.

이렇게하면 주제를 깨끗하게 유지할 수 있습니다. 메시지를 처리해야 할 때마다 파이프 라인을 한 번만 설정하여 쉽게 할 수 있습니다.

+0

불행히도 카프카 주제에 데이터를 입력하는 방법을 제어 할 수 없습니다. :/ –

+0

@burakemre 그렇다면 데이터를 10 %에서 90 %까지 배포하는 방법은 무엇입니까? – Abhimanyu