Programming/Kafka 32

[kafka] docker portainer로 topic 검색

카프카를 docker를 통해서 설치한다면, docker 내부에 설치된 카프카 관련 명령어들을 바로 사용할 수 없어 번거롭다. 이럴때 portainer tool을 사용하여 cmd창을 실행하면 쉽게 명령어를 실행할 수 있다. portainer 설치는 아래 사이트를 참고하면 된다. www.portainer.io/ Portainer | Open Source Container Management GUI for Kubernetes, Docker, Swarm Portainer is the definitive open source container management GUI for Kubernetes, Docker, Swarm and ACI. www.portainer.io portainer 접속포트는 리눅스 기반이라면..

Programming/Kafka 2021.01.29

[kafka] consumer producer key value 확인

카프카는 토픽을 기본으로 파티셔닝을 한다. 하지만 하나의 파티션 안에서 또다른 기준 값이 필요하다면 key를 따로설정해줄수 있다. key 에대한 설정은 기본이 null값이기 때문에, 따로 지정하지 않으면 null로 들어감을 확인할 수 있다. 아래 옵션을 컨슈머, 프로듀서의 콘솔창 실행 옵션에 추가하여 key, value를 확인해 보자. key, value 설정 옵션 parsing.key : key와 value 파싱 활성화 여부 key.separator : key와 value 파싱 구분자 print.key : console 창 출력 여부 컨슈머, 프로듀서의 콘솔창 실행 옵션에 추가 1) producer PS C:\kafka\kafka_2.12-2.5.0\bin\windows> .\kafka-console-..

Programming/Kafka 2020.05.25

[kafka] Multi-broker cluster 설치 및 실행

이전에 카프카 공식홈페이지의 Quick Start 가이드를 참고하여 하나의 주키퍼에 하나의 카프카를 연동하여 실행시키는 것은 진행해 보았다. 이번 글에서는 하나의 주키퍼에 멀티 카프카를 연동하는 방법에 대해서 알아보자. 윈도우 환경에서 Powershell이나 cmd 창에서 kafka_2.12-2.5.0\bin\windows 경로에서 명령어를 실행한다. 리눅스 환경이라면 terminal 창에서 kafka_2.12-2.5.0\bin 경로에서 명렁어를 실행한다. 필자는 윈도우 환경이므로, 윈도우 기반으로 설명을 진행하겠다. 1. 주키퍼 실행 주키퍼의 환경설정은 ..\..\..\config\zookeeper.properties 파일을 참고하면 된다. 만약 멀티 노드 환경의 주키퍼를 실행한다면, 해당파일의 수정이..

Programming/Kafka 2020.05.23

[kafka] Confluent Platform Versions

카프카 구축 프로젝트를 진행하다보면, Confluent 에서 제공하는 플랫폼 버전과 카프카 버전을 확인해야할 때가 있다. 2020년 5월 18일 기준 버전은 아래와 같다 컨플루언트 플랫폼 릴리즈 버전 지원 종료 날짜는 부 버전 (예 : 5.5.x)에만 적용됩니다. 유지 관리 버전은 동일한 2 년 수명주기를 따릅니다. 2 년 지원 정책이 표준입니다. 프리미엄 지원 플랜에는 연장 지원 정책이 적용될 수 있습니다. 각 버전의 Confluent Platform에는 특정 Confluent Platform 버전에서만 호환되는 여러 구성 요소 서비스가 포함되어 있습니다. 여러 버전에서 사용할 수있는 클라이언트 및 Confluent Control Center를 포함한 예외가 있습니다. Apache Kafka® 및 그 ..

Programming/Kafka 2020.05.20

[kafka] multi-node zookeeper & kafka docker-compose.yml file

주키퍼와 카프카를 도커에 구축하기 위해서는 도커로 하나씩 실행하는 것보단 도커 컴포즈나 도커 스왐으로 실행하는 것을 추천한다. 주키퍼, 카프카 모두 분산 처리 시스템이기 때문에 여러개의 어플리케이션을 한꺼번에 띄우고 관리하는 것은 도커 컴포즈가 편하기 때문이다. 도커 컴포즈를 사용하다보면 도커 스왐이나 쿠버네티스가 더 편할것 같고, 옮길까 고민도 했지만 우선 도커 컴포즈 기준으로 분산 처리 시스템을 구축해본다. Sample docker-compose.yml 주키퍼 1개와 카프카 3개를 셋팅한 도커 컴포즈 파일은 아래와 같다. version: "3.8" services: zoo1: image: zookeeper:3.4.9 restart: always hostname: zoo1 networks: broker..

Programming/Kafka 2020.05.19

[kafka] 보관 주기 설정

카프카의 데이터 보관 주기는 기본적으로 7일로 설정되어 있다. 보관 주기를 수정하는 방법 2가지가 있으며, 수정할때도 용량단위, 시간단위, 일단위, 초단위로 구체적인 단위로 설정 가능하다. 방법1. server.properties 파일 수정 보관주기 옵션 항목 log.retention.bytes : byte 단위 기준으로 데이터 보관 log.retention.ms : 초 단위 기준으로 데이터 보관 log.retention.minutes : 분 단위 기준으로 데이터 보관 log.retention.hours : 시간 단위 기준으로 데이터 보관, 해당 옵션이 168으로 기본으로 적용되어 있음 server.properties 파일 확인 ############################# Log Retentio..

Programming/Kafka 2020.05.15

[kafka][용어정리] ISR : In Sync Replica

카프카를 사용하기 위해선 필수적으로 알아야할 개념 중 하나가 ISR 이다. 카프카에서 리더와 팔로워는 각자 역할이 나뉘는데 가장 중요한 것은 리더는 Read/Write를 하고, 팔로워는 주기적으로 리더의 데이터를 보며 복제만 한다는 것이다. 만약 리더가 있는 브로커가 장애가 난다면 팔로워는 새로운 리더가 될 수 있다. 이때 데이터의 정합성을 유지하기 위해 등장한 개념이 카프카의 ISR이다. ISR은 In Sync Replica의 약어로 현재 리플리케이션이 되고 있는 리플리케이션 그룹(replication group)을 의미한다. # 1 ISR이 가지고 있는 중요한 규칙 중 하나가 ISR에 속해 있는 구성원만이 리더의 자격을 가질 수 있는 것이다. Replica 그룹으로 관리하며 ISR 그룹안에 구성원이 ..

Programming/Kafka 2020.05.14

[kafka] JVM Heap size

카프카는 자바 기반의 JVM을 사용하는 애플리케이션이므로 메모리가 할당되는 영역인 힙(heap)이 만들어진다. # 카프카 메모리 하지만 카프카는 힙 공간을 주의해서 사용하기 때문에 힙 크기를 6GB이상으로 설정하지 않아도 된다. 적은 힙 공간으로도 구동이 가능한 이유는 메세지를 저장하고 캐싱할때, 파일 시스템에 크게 의존하기 때문이다. 모든 데이터는 disk에 flush 할 필요 없이 파일 시스템에 영구적인 로그로 즉시 기록된다. 사실 이것은 커널의 페이지 캐시로 전송된다는 것을 의미한다. 최신 OS는 메모리를 회수할 때 사용가능한 모든 메모리를 디스크 캐싱으로 전환하기 때문에 성능저하가 거의없다. 그렇기 때문에 카프카의 힙 크기는 6GB이상으로 설정하지 않아도 된다. 이 결과 32GB 머신에서 28-3..

Programming/Kafka 2020.05.13

[kafka] default partition replication-factor option

카프카 운용시 브로커내에 생성되지 않는 토픽 이름으로 메시지를 보낼때, 카프카에서는 자동으로 토픽을 생성하게 해줄수 있다. 아래 옵션은 존재하지 않는 토픽에 메타데이터를 패치하거나 메세지를 생성하면 자동으로 토픽을 생성한다. 운영에서는 false로 설정하기를 가이드 하고 있다. # 기본값은 true로 설정. auto.create.topics.enable = true 토픽을 자동으로 생성하는 과정에서 partition 수와 replication-factor 값도 기본값을 설정할 수있다. # 기본 partition수 설정. # 기본값은 3이다. num.partitions # 기본 replication-factor 수 설정. # kafka version 2.12.x버전에는 해당 옵션이 없긴하지만, 항목을 그대..

Programming/Kafka 2020.05.12

[kafka] spring kafka vs kafka clients

Java 기반 어플리케이션으로 kafka를 적용할때 사용하는 라이브러리는 spring kafka vs kafka clients 2가지가 있다. spring-kafka는 kafka-clients보다 레퍼런스가 풍부하며, 고수준의 라이브러리로 사용자가 사용하기 편리한 장점이 있다. kafka clients는 저수준의 라이브러리로 사용자가 직접 Configuration을 해줘야하며, spring-kafka : springboot 기반으로 편리하게 사용가능 spring-kafka가 Spring 기반으로 미리 등록된 빈으로 활용하여 환경설정이나 Consumer, Producer 기능을 비교적 쉽게 구현할 수 있다. 아래는 Consumer, Producer 환경 설정의 예시 코드 이다. ① pom.xml에 spri..

Programming/Kafka 2020.05.06