[Apache Kafka] 카프카 컨슈머 상세 개념
·
Data Infra
이번에는 컨슈머의 고급 활용법과 옵션별 동작 방식에 대해 자세히 알아보자멀티 스레드 컨슈머데이터를 병렬처리하기 위해서 파티션 개수와 컨슈머 개수를 동일하게 맞추는 것이 가장 좋음파티션 개수가 n개라면 동일 컨슈머 그룹으로 묶인 컨슈머 스레드를 최대 n개 운영 가능=> n개의 스레드를 가진 1개의 프로세스를 운영 or 1개의 스레드를 가진 프로세스를 n개 운영멀티 스레드를 지원하지 않는 언어 또는 환경 -> 프로세스 여러 개멀티 스레드 지원하는 경우 -> 컨슈머 스레드를 여러 개자바는 멀티 스레드 지원멀티 스레드로 컨슈머를 안전하게 운영하기 위한 고려사항하나의 컨슈머 스레드에서 예외적 상황(ex. OutofMemoryException)이 발생할 경우 프로세스 자체가 종료되어 다른 스레드에 영향을 줄 수 있..
[Apache Kafka] 카프카 프로듀서 상세 개념
·
Data Infra
데이터 유실을 막기 위해서 프로듀서에서 제공하는 다양한 옵션을 함께 사용해야 한다. 여기서는 프로듀서의 고급 활용법과 옵션별 동작 방식에 대해 알아본다.acks 옵션카프카 프로듀서읭 acks 옵션은 0, 1, all(또는 -1) 값을 가질 수 있음이 옵션을 통해 프로듀서가 전송한 카프카 클러스터에 얼마나 신뢰성 높게 저장할지 지정 가능또한, acks 옵션에 따라 성능이 달라질 수 있으므로 acks 옵션에 따른 카프카의 동작 방식을 상세히 알고 설정해야 함복제 개수(replication.factor)가 1인 경우 acks 옵션에 따른 성능 변화가 크지 않으므로 여기선느 복제 개수가 2 이상인 경우에 대해 알아보자acks=0프로듀서가 리더 파티션으로 데이터를 전송했을 때 리더 파티션으로 데이터가 저장되었는지..
[Apache Kafka] 토픽과 파티션 상세 개념
·
Data Infra
적정 파티션 개수토픽의 파티션 개수는 카프카의 성능과 관련이 있음=> 적절한 파티션 개수를 설정하고 운영하는 것이 매우 중요토픽 생성 시 파티션 개수 고려사항데이터 처리량메시지 키 사용 여부브로커, 컨슈머 영향도데이터 처리량파티션 = 카프카 병령처리의 핵심파티션 개수가 많아질수록 1:1 매핑되는 컨슈머 개수 증가=> 파티션 개수 정할 때는 토픽에 필요한 데이터 처리량을 측정하는 것이 중요데이터 처리 속도 향상시키는 방법 2가지컨슈머 자체의 처리량을 늘리기컨슈머가 실행되는 서버의 사양을 스케일 업GC 튜닝etc..but, 컨슈머 특성상 다른 시스템들(S3, 하둡, 오라클 등)과 연동되기 때문에 일정 수준 이상 처리량을 올리는 것은 매우 어려움..컨슈머를 추가해서 병렬처리량 늘리기가장 확실한 방법프로듀서 전..
[Apache Kafka] 카프카 스트림즈, 카프카 커넥트, 카프카 미러메이커2
·
Data Infra
본 게시글은 '아파치 카프카 애플리케이션 프로그래밍 with 자바'를 읽고 개인적으로 정리한 내용입니다카프카 스트림즈 - 개요카프카 스트림즈(Kafka Streams): 토픽에 적재된 데이터를 상태기반(stateful) 또는 비상태기반(stateless)으로 실시간 변환하여 다른 토픽에 적재하는 라이브러리아파치 스파크(Apache Spark), 아파치 플링크(Apache Flink), 아파치 스톰(Apache Storm), 플루언트디(Fluentd)와 같은 다양한 오픈소스 애플리케이션도 있으나, 카프카 스트림즈 사용 권장카프카 스트림즈를 사용해야 하는 이유카프카에서 공식적으로 지원하는 라이브러리 -> 카프카 클러스터와 완벽 호환스트림 처리에 필요한 편리한 기능들(신규 토픽 생성, 상태 저장, 데이터 조인..
[Apache Kafka] 카프카 기본 개념
·
Data Infra
본 게시글은 '아파치 카프카 애플리케이션 프로그래밍 with 자바'를 읽고 개인적으로 정리한 내용입니다. 이번 포스팅에서는 카프카의 역사와 각 컴포넌트들의 특징, 관련 생태게(카프카 스트림즈, 카프카 커넥트, 카프카 미러메이커2)에 대해 알아보자.카프카 브로커 / 클러스터 / 주키퍼카프카 브로커(Kafka Broker): 카프카 클라이언트와 데이터를 주고받기 위해 사용하는 주체데이터를 분산 저장하여 장애가 발생하더라도 안전하게 사용할 수 있도록 도와주는 애플리케이션데이터를 안전하게 보관하고 처리하기 위해서 보통 3대 이상의 브로커 서버를 1개의 클러스터로 묶어서 운영카프카 브로커의 역할데이터 저장, 전송프로듀서로부터 데이터를 전달받고, 이를 요청한 토픽의 파티션에 데이터를 저장컨슈머가 데이터를 요청하면,..
[Apache Kafka] 카프카 설치와 커맨드 라인 툴
·
Data Infra
본 게시글은 '아파치 카프카 애플리케이션 프로그래밍 with 자바'를 읽고 개인적으로 정리한 내용입니다. 본격적으로 카프카에 대한 상세한 개념을 습득하기 전에 카프카를 설치하고, 커맨드 라인 툴을 통해 카프카에 명령을 내리는 방법에 대해 알아보자.실습용 카프카 브로커 설치책에서는 AWS EC2를 통해 실습을 진행했지만 우리는 AWS까지 가지 않고, 도커를 통해 우분투 서버를 띄워서 실습을 해볼 것이다. 도커에 대한 설명은 전에 작성한 도커 관련 포스팅을 확인하자. 순서대로 따라오면 어렵지 않으니 긴 설명 없이 순서대로 설명하도록 하겠다. 실습을 따라하기 위해서는 macOS 기준 도커 데스크탑이 설치되어 있어야 한다.1) 도커를 통한 우분투 서버 실행docker run -it --name ubuntu-se..
[Apache Kafka] 카프카의 탄생과 미래
·
Data Infra
본 게시글은 '아파치 카프카 애플리케이션 프로그래밍 with 자바'를 읽고 개인적으로 정리한 내용입니다.카프카의 탄생카프카 도입 이전 파이프라인 아키텍처 데이터를 생성하고 적재하기 위해서는 데이터를 생성하는 '소스 애플리케이션'과 데이터가 최종 적재되는 '타깃 애플리케이션'을 연결해야 한다. 초기 운영 시에는 단방향 통신을 통해 소스 애플리케이션에서 타깃 애플리케이션으로 연동하는 소스코드를 작성했다. 하지만, 이러한 데이터 파이프라인 파편화 방식은 소스 애플리케이션과 타깃 애플리케이션이 점점 많아지면서 문제가 생겼다.데이터를 전송하는 파이프라인이 기하급수적으로 복잡해짐소스코드 및 버전 관리 이슈타깃 애플리케이션에서의 에러가 소스 애플리케이션으로 전파위와 같은 문제를 해결하기 위해 다양한 메시지 플랫폼과 ..