본문 바로가기

클라우드/Kafka5

[Kafka] 오프셋 커밋 동기 비동기, 리밸런스 리스너 [Kafka] 오프셋 커밋 리밸런스 리스너 지난번에 카프카 컨슈머의 기본예제와 중요개념에 대해 설명했고 이번엔 카프카 컨슈머의 주요 옵션들과 동기, 비동기 오프셋 커밋 방식과 리밸런싱, 파티션할당에 대한 예제 코드를 만들고 테스트 해보겠습니다. Kafka Consumer Client 주요 옵션 컨슈머 프로그램을 실행할때 필요한 필수옵션과 선택옵션들이 있습니다. 필수 옵션 옵션설명 bootstrap.servers카프카 브로커 서버의 주소와 포트를 입력한다. 브로커 서버가 여러대일 경우 2개이상의 서버정보를 입력하여 특정 브로커 서버가 장애시에도 다른 서버를 통해 데이터를 처리할수 있다.key.deserializer레코드 메시지 키를 역직렬화하는 클래스 지정value.deserializer레코드 메시지 값을.. 2022. 1. 24.
[Kafka] 리밸런싱 오프셋 커밋 subscribe poll 개념 설명 [Kafka] 리밸런싱 오프셋 커밋 subscribe poll 개념 설명 이번에는 Kafka Producer에 이어서 Kafka Consumer 프로그램을 만들어보도록 하겠습니다. 컨슈머의 역할은 프로듀서가 카프카 토픽에 전송한 데이터를 사용하기 위해 가져오는 동작을 수행합니다. Kafka Consumer 예제 기본 프로젝트 구성은 이전에 Kafka Producer를 만들때와 동일하게 만들고 TestConsumer.java 라는 클래스를 생성하여 다음과 같이 코드를 입력합니다. IntelliJ 에서 Kafka Producer Client 만들기 [TestConsumer.java] import lombok.extern.slf4j.Slf4j; import org.apache.kafka.clients.cons.. 2022. 1. 21.
Kafka Producer Client 주요 옵션 설명과 메시지 키/특정 파티션/동기-비동기 전송 Kafka Producer Client - 2 지난번에 Java Project로 카프카 프로듀서 클라이언트를 만들어서 쿠버네티스에서 실행시킨후 100건의 데이터를 토픽을 전송하는 테스트를 해봤습니다. [Kafka] 카프카 프로듀서 Kubernetes에서 Pod로 실행하기 #jar #Kafka Producer #Docker image Kafka Producer Client 카프카 브로커 서버에 토픽을 만들어 봤다면 카프카 프로듀서 역할을 할수있는 클라이언트 프로그램을 만들어서 데이터를 전송하는 테스트를 해볼수 있습니다. 카프카 프로듀 ksr930.tistory.com 이번엔 카프카 프로듀서 클라이언트에서 설정할수 있는 옵션들과 토픽으로 데이터 전송시 단순하게 토픽만 지정해서 전송하는 방식외에 3가지 방법을.. 2021. 12. 2.
[Kafka] 카프카의 특징과 내부구조 (브로커, 프로듀서, 컨슈머, 파티션) Kafka 개념 정리 - 1 기존의 데이터 전송방식 문제점 카프카를 사용하기 이전에는 애플리케이션간 데이터 전송시 직접 연결해서 전송하는 엔드 투 엔드(end to end)방식을 사용했었습니다. 소규모일때는 문제가 되지않았지만 시스템의 규모가 커지면서 애플리케이션의 개수가 늘어나게되자 애플리케이션간에 데이터 전송 관계가 복잡해지게 되었습니다. 그 영향으로 타겟 애플리케이션에 장애가 발생할경우 연결된 소스 애플리케이션에도 영향을 끼치게 되는 문제가 생기게 되었습니다. 카프카(Kafka) 탄생 2011년 구인/구직관련 사이트인 링크드인에서는 이런 문제를 해결하기위해 애플리케이션간에 직접 통신을 하는게 아닌 데이터의 중앙 집중화를 하는 시스템을 만들 었는데 이 시스템이 바로 아파치 카프카(Apache Kafk.. 2021. 10. 27.
[Kafka] 카프카 토픽과 파티션, 레코드 저장방식 카프카(Kafka) 내부 구조 - 2 토픽(Topic) 토픽은 데이터를 구분하기 위해 사용하는 단위입니다. RDBMS의 테이블과 같은 개념이기도 합니다. 토픽에는 한개 이상의 파티션이 존재하는데 파티션 내부에는 프로듀서로부터 받은 데이터를 보관하고 있고 카프카에서는 이런 데이터들을 레코드 라고 부릅니다. 토픽은 하나 이상의 파티션을 가질수 있으며 프로듀서에서 받은 레코드를 순서대로 저장합니다. 저장된 레코드는 FIFO 방식으로 컨슈머에서 가져갑니다. 지난번 포스팅에서도 설명했듯이 컨슈머에서 파티션에 있는 레코드를 가져가도 삭제되지 않습니다. 남아있는 레코드는 새로운 컨슈머가 등록되었을때 파티션의 0번 오프셋 레코드부터 순서대로 가져갈수 있습니다. 단, 새로운 컨슈머가 파티션에 있는 레코드를 가져가기 위해.. 2021. 10. 27.