기본 콘텐츠로 건너뛰기

라벨이 kafkaConsumer인 게시물 표시

[번역] 카프카 컨슈머 소개: 새 아파치 카프카 0.9 컨슈머 클라이언트 시작하기

 카프카 컨슈머 클라이언트 0.9.0 에 대한 글이 있어서 학습차 요약정리 해두기로 했음. 발번역이고 의역과 생략된 내용 있으니,,, ((((( ' ') 원문: http://www.confluent.io/blog/tutorial-getting-started-with-the-new-apache-kafka-0.9-consumer-client 원작자: Jason Gustafson  애초에 카프카는 스칼라로 만들어진 프로듀서와 컨슈머 클라이언트를 제공했다. 시간이 지나면서 이 API에 많은 제약이 있음을 깨닫게 되었다. 예를 들어, 컨슈머 그룹을 지원하고 Failover 처리하는 ‘high-level’ 컨슈머 API가 있지만 더 복잡한 시나리오를 지원하지 못했다. 그리고 풀 컨트롤을 제공하는 “simple” 컨슈머 클라이언트가 있지만 사용자가 Failover와 에러 처리를 직접해야 했다. 그래서 다양한 사례를 처리하기 위해 클라이언트를 다시 디자인하기 시작했다.  첫 단계로 0.8.1에 Producer API를 다시 작성하고, 두 번째 단계로 새( new ) 컨슈머 API 소개하는 0.9 배포가 최근에 완료되었다. 카프카에서 제공하는 새( new ) 그룹 코디네이션 프로토콜 기반으로 새 컨슈머를 개발하면 아래와 같은 이점을 가질 수 있다. 깔끔하게 통합된 API: 새 컨슈머는 예전의 “심플” 하고 “고수준" 컨슈머 클라이언트의 두가지 능력을 결함하고,  자신만의 소비 전략을 만들기 위해 그룹 코디네이션과  저수준의 접근성 두가지를 결합한다. 의존성 감소: 새 컨슈머는 순수 자바로 작성 되었다. 스칼라 런타임이나 주키퍼에 의존성이 없어 서 프로젝트에 포함 시킬 수 있는 더 가벼운 라이브러리를 만들 수 있다. 향상된 보안: 카프카 0.9에 구현된 보안확장 은 새 컨슈머에만 지원된다. 또한, 새 컨슈머는 컨슈머 프로세스 그룹의 Fault-Tolerant를 관리하기 위해 프로토콜 세트( set...

카프카 컨슈머 설정

컨슈머 설정은 config/consumer.properties에서 컨슈머 기본세팅 group.id 단일 그룹으로 컨슈머 그룹을 구분하는 문자열값. 같은 ID를 지정하면 동일한 그룹으로 마킹 할 수 있다. zookeeper.connect 브로커 설정  참고 consumer.id 컨슈머 ID가 지정되지 않으면 자동 생성 된다. 스레드와 성능설정 socket.receive.buffer.bytes 네트워크 요청에 대한 받기 버퍼의 크기. 기본 1024000. fetch.message.max.bytes 요청이 있을 때 마다 토픽의 파티션에서 패치 할 바이트 수. 프로듀서가 설정값 보다 큰 값을 보내는 경우는 메시지를 받을 수 없기 때문에, 프로듀서가 보내는 최대 메시지 만큼 값이 커야 한다. 또한, 컨슈머가 패치한 메시지를 메모리에 유지하기 때문에 사용하는 만큼 메모리 설정도 해야 한다. 이 값은 주의 깊게 설정되어야 하는 값 이다. 기본 1024 * 1024 num.consumer.fetchers 카프크에서 데이터를 패치할 때 사용될 스레드 개수. 기본 1 queued.max.message.chunks 소비되기 전에 버퍼될 수 있는 최대 청크수. 청크는 최대 fetch.message.max.bytes 만큼 크기가 될 수 있다. 기본 2 fetch.min.bytes 서버에서 패치될 최소 바이트 수. 요청을 응답하기 전에 더 많은 데이터가 패치 될 때 까지 기다린다. consumer.timeout.ms 만약 메시지를 소비할 상황이 되지 못한다면 예외를 던지는데, 예외를 던지기전 컨슈머 스레드가 기다릴 시간. 기본 -1 로그 세팅 auto.commit.enable true 일경우, 컨슈머는 실패할 경우에 복구하기 위해 메시지 오프셋을 저장한다. rebalance.max.retries 컨슈머 그룹에서 파티션 수가 동일하게 분산된다. 만약 새로운 컨슈머가 조인하면, ...