카프카
-
06. 카프카 클라이언트(Kafka Client with JAVA)BackEnd/Kafka 2021. 11. 5. 09:35
카프카 클러스터에 명령을 내리거나 데이터를 송수신하기 위해 카프카 프로듀서, 컨슈머, 어드민 클라이언트를 제공하는 카프카 클라이언트를 사용하여 애플리케이션을 개발합니다. 카프카 클라이언트는 라이브러리이기 때문에 자체 라이프사이클을 가진 프레임워크나 애플리케이션 위에서 구현하고 실행해야 합니다. 아래 자바 애플리케이션에 대한 전체 소스코드는 각 제목에 링크가 걸려 있습니다. 1. 프로듀서 API 아래 SimpleProducer.java는 프로듀서의 가장 기본적인 형태로 개발된 애플리케이션입니다. 프로듀서 사용환경에 따라 특정 데이터를 가지는 레코드를 특정 파티션으로 보내야 하는 경우(kafka-producer-custom-partitioner)나 브로커 정상 전송 여부를 확인하는 프로듀서가 필요한 경우(동..
-
03. 토픽(Topic)과 파티션(Partition)BackEnd/Kafka 2021. 11. 2. 04:31
1. 적정 파티션 개수 토픽의 파티션 개수는 카프카의 성능과 관련이 있습니다. 그렇기 때문에 토픽을 운영함에 있어 적절한 파티션 개수를 설정하고 운영하는 것이 중요합니다. 토픽 생성 시 파티션 개수 고려사항으로 데이터 처리량, 메시지 키 사용 여부 및 브로커, 컨슈머 영향도가 있습니다. 1) 데이터 처리량 데이터 처리 속도를 올리는 방법은 컨슈머의 처리량을 늘리는 것(서버의 사양을 올리는 스케일 업 또는 GC 튜닝 등)과 컨슈머를 추가해서 병렬처리량을 늘리는 것입니다. 파티션 개수는 프로듀서가 보내는 데이터양과 컨슈머의 데이터 처리량을 계산해서 정하면 됩니다. 프로듀서 전송 데이터량 < 컨슈머 데이터 처리량 X 파티션 개수 파티션 개수만큼 컨슈머 스레드를 운영한다면 해당 토픽의 병렬처리를 극대화할 수 있..
-
01. 카프카(Kafka)BackEnd/Kafka 2021. 10. 30. 17:00
들어가기 전 용어를 간략히 정의하면, 데이터 파이프라인이란 데이터를 추출(extracting)하고 변경(transforming), 적재(loading)하는 과정을 묶은 것입니다. 클러스터란 여러 대의 컴퓨터들이 연결되어 하나의 시스템처럼 동작하는 컴퓨터들의 집합이며 카프카의 브로커란 카프카의 서버입니다. 데이터를 생성하고 적재하기 위해서는 데이터를 생성하는 소스 애플리케이션과 데이터가 최종 적재되는 타깃 애플리케이션을 연결해야 합니다. end to end 연결 방식의 아키텍처는 데이터를 전송하는 라인이 기하급수적으로 복잡해지며 확장이 어렵습니다. 또한 1:1 매칭의 데이터 파이프라인은 커플링으로 인해 한쪽의 이슈가 다른 쪽 애플리케이션에 영향을 미칩니다. 이를 해결하기 위해 링크드인 데이터팀에서 만든 것..