본문 바로가기
반응형

정리 예정9

[Kafka] #9 아파치 카프카 컨슈머(Kafka Consumer) - Shutdown Hook를 이용한 컨슈머 종료 C 프로그래밍을 작성할 때 종료 핸들러(Exit Handler)라는 것을 작성해야할 때가 있다. 원격 서버와의 통신시 클라이언트 연결이 서버 쪽의 리소스를 잡아먹고 있을 때, 적절히 정리 작업을 하지 않으면 서버측 리소스가 점유된 상태로 남아버리기 때문에 종료시에 적당한 정리 작업을 해줘야 할때가 있다. 카프카 컨슈머의 경우에도 쓰레드가 종료할 때 생성했던 consumer 객체를 consumer.close() 메소드로 정리를 해주는게 좋다. 그렇지 않으면 일정기간동안 브로커 서버에 종료되는 클라이언트와 관련된 내용이 남아있을 수 있기 때문이다. C 프로그램에서 사용했던 atexit() 같은게 Java에서도 존재한다. 셧다운 후크(Shutdown hook) 라는 기능으로 자바 애플리케이션이 강제 혹은 정상.. 2019. 2. 6.
[Kafka] #8 아파치 카프카 컨슈머(Kafka Consumer) 특정 오프셋을 커밋하고 사용하기 및 리밸런스 리스너 지난 포스트에서 자바를 이용한 카프카 컨슈머 프로그램을 작성해봤다. 그 중 오프셋 커밋과 관련된 기본적인 내용을 다뤘었다. [Kafka] #7 아파치 카프카 컨슈머(Kafka Consumer) 자바(Java)예제 코드 이번 포스트에서는 오프셋을 좀 더 상세히 다루는 방법에 대해서 정리해보겠다. 특정 오프셋으로 커밋하기이전 포스트에서 다뤘던 오프셋 커밋 메소드들(commitSync(), commitAsync())은 poll() 메소드에서 가져온 마지막 오프셋을 커밋했다. 사용자는 "지금 오프셋을 커밋해줘"라고 요청을 보낼 수 있을 뿐이었다. 만약 한번에 가져오는 메시지의 양이 많거나 하나의 메시지를 처리하는데 오래걸린다면, poll() 메소드에서 가져온 메시지를 처리하는 중간중간에 처리가 완료된 오프셋을 .. 2019. 2. 5.
[Kafka] #7 아파치 카프카 컨슈머(Kafka Consumer) 자바(Java)예제 코드 카프카 컨슈머 그룹과 컨슈머의 동작 방식에 대해서 알아봤다. 이제 자바를 이용해서 카프카 데이터를 읽어가는 예제 프로그램을 작성해보겠다. [Kafka] #2 - 아파치 카프카(Apache Kafka) 설치 및 실행, Quickstart[Kafka] #3 - 아파치 카프카 프로듀서 (Apache Kafka Producer) 실행과 간단한 설정 예제(Configuration Example)[Kafka] #6 아파치 카프카 컨슈머와 컨슈머 그룹(Apache Kafka Consumer & Consumer Group) 이전 포스트에서 다뤘던 내용을 바탕으로 카프카 서버를 구동하고, "test"라는 이름의 토픽을 준비해보자. 카프카 컨슈머 예제"test" 토픽에서 메시지를 소비하는 가장 간단한 샘플 코드는 다음과 .. 2019. 2. 2.
[Kafka] #6 아파치 카프카 컨슈머와 컨슈머 그룹(Apache Kafka Consumer & Consumer Group) 카프카로 데이터를 전송하는 프로듀서와 다르게 카프카에서 데이터를 읽어가는 컨슈머는 컨슈머 그룹이라는 개념에 대해서 먼저 알아야 할 필요가 있다. [Kafka] #1 - 아파치 카프카(Apache Kafka)란 무엇인가? 이전 포스트에서 간략하게 컨슈머의 메시지 읽기 동작에 대해 언급했었다. 이번 포스트에서는 좀 더 자세히 설명하여 카프카 컨슈머의 동작 방식에 대해서 확실하게 이해하고 넘어가도록 하겠다. 컨슈머 그룹(Consumer Group)카프카 프로듀서가 전송한 메시지는 토픽의 파티션에 나눠서 저장된다. 파티션에 저장된 이 메시지들은 컨슈머(Consumer)들에 의해 읽혀진다. 하나 이상의 카프카 컨슈머들은 컨슈머 그룹(Consumer Group)을 형성한다. 컨슈머가 특정 파티션의 데이터 소비를 위.. 2019. 1. 30.
[Kafka] #5 - 아파치 카프카 프로듀서(Apache Kafka Producer Partitioner) 설정 값 카프카 프로듀서를 생성할 때 프로퍼티를 명시한다. 이전에 봤던 "bootstrap.servers"와 "key.serialized", "value.serializer"를 비롯한 설정가능한 다른 프로퍼티들도 많이 있다. 이번 포스트에서는 카프카 프로듀서에 설정가능한 프로퍼티들을 알아보겠다. bootstrap.servers카프카 프로듀서가 최초로 접속할 때 필요한 주소들이다. 모든 카프카 클러스터를 입력할 필요는 없지만 두 개 이상 입력하기를 권장한다. 입력한 브로커 주소 중 하나라도 가용 상태면 프로듀서의 동작에 문제는 없다. key.serializer카프카 메시지의 키(key)를 바이트 배열로 만들어 줄 클래스를 명시한다. org.apache.kafka.common.serialization 인터페이스를 구.. 2019. 1. 10.
[Kafka] #4 - 아파치 카프카 프로듀서(Apache Kafka Producer Partitioner) 파티셔너 카프카 프로듀서에서 생각해봐야 할 프로퍼티 중 하나로 파티셔너(Partitioner)다. 파티셔너는 카프카 프로듀서로 메시지를 전송 할 때 토픽의 어떤 파티션으로 전송해야 할지를 결정해주는 클래스다. 카프카의 생성자에 넘겨주는 인자 중 하나인 Properties 객체에 "partitioner.class"라는 이름의 프로퍼티로 설정하면 된다. 별도로 설정하지 않으면 kafka.producer.DefaultPartitioner 클래스가 할당된다. 아파치 카프카 프로듀서의 파티셔너(Partitioner)파티셔너로 사용할 수 있는 클래스는 org.apache.kafka.client.producer.Partitioner 인터페이스를 구현해야 한다. Partitioner 인터페이스는 다음과 같다. public in.. 2019. 1. 9.
[Kafka] #3 - 아파치 카프카 프로듀서 (Apache Kafka Producer) 실행과 간단한 설정 예제(Configuration Example) 카프카에 대한 간단한 개념과 카프카 서버 구동 방법에 대해서 간략하게 알아봤다. [Kafka] #1 - 아파치 카프카(Apache Kafka)란 무엇인가? [Kafka] #2 - 아파치 카프카(Apache Kafka) 설치 및 실행, Quickstart 이전 글에서는 콘솔에서 메시지를 전송하고 읽을 수 있는 콘솔 프로듀서와 콘솔 컨슈머를 사용해봤다. 이제 자바(Java)를 이용해서 카프카에 메시지를 전송할 수 있는 프로듀서를 구현해 볼 차례다. 카프카는 자바를 위한 프로듀서 클라이언트 라이브러리를 지원한다. 카프카 라이브러리를 사용하기 위한 메이븐(Maven) Dependency는 다음과 같다. org.apache.kafka kafka-clients 2.0.0 메이븐 pom.xml 파일에 추가하고 관련 .. 2019. 1. 7.
[Kafka] #2 - 아파치 카프카(Apache Kafka) 설치 및 실행, Quickstart 아파치 카프카의 웹 페이지를 보면 카프카를 처음 접하는 사람들도 쉽게 써볼 수 있는 "퀵 스타트(Quick Start)" 항목이 있다. 다운로드부터 간단한 실행까지 쉽게 따라할 수 있는 예제들이 정리되어 있다. 1. 다운로드카프카 다운로드 페이지에서 카프카 릴리즈 패키지를 다운로드 할 수 있다. 참고로 카프카 아카이브에서 이전 버전을 포함한 다양한 버전의 카프카 릴리즈 패키지를 내려받을 수 있다. 적당한 패키지를 다운로드하고 압축을 풀어준다. 12$ tar -xzf kafka_2.11-2.1.0.tgz$ cd kafka_2.11-2.1.0​cs 2. 서버 시작압축을 풀어내면 카프카를 위한 다양한 바이너리들과 설정 파일들이 들어있다. 카프카는 주키퍼를 사용해 내부 클러스터 멤버십 관리를 한다. 따라서 카프.. 2018. 12. 19.
[Kafka] #1 - 아파치 카프카(Apache Kafka)란 무엇인가? 데이터 파이프라인(Data Pipeline)을 구축할 때 가장 많이 고려되는 시스템 중 하나가 '카프카(Kafka)' 일 것이다. 아파치 카프카(Apache Kafka)는 링크드인(LinkedIn)에서 처음 개발된 분산 메시징 시스템이다. 2011년 오픈소스로 공개되었으며 이후 2012년 10월 아파치 인큐베이터를 종료했다. 현재 링크드인에서 카프카를 개발하던 제이 크렙스(Jay Kreps)를 비롯한 일부 엔지니어들이 'Confluent'라는 회사를 설립하여 카프카와 관련된 일을 하고 있다. 카프카라는 이름은 유명한 작가인 '프란츠 카프카(Franz Kafka)'에서 따왔다. (참조 : Quora) I thought that since Kafka was a system optimized for writi.. 2018. 12. 18.
반응형