거꾸로 바라본 세상
article thumbnail
[Kafka] 8. Spring boot에서 kafka 구축
Back-End/Kafka 2023. 4. 25. 09:30

Spring boot에서 kafka 구축 Spring Boot를 이용하여 kafka API를 사용해보고자 한다. 사전조건 kafka 설치 상태 개발도구 설치 상태 개발환경 jdk : 1.8 IDE : intelliJ build : gradle kafka 서버는 Ubuntu 18.04LTS에 설치되어 있다. 준비 Producer를 통해 메시지를 보내고 Consumer를 통해 topic에 있는 데이터를 받아오는 프로그램을 간단하게 만들어보자. URL 내용 /send?msg= Kafka source-topic에 메시지를 보낸다. /receiver Kafka source-topic에 들어간 메시지 한개 받는다. 진행 1. zooKeeper, kafka 실행 Zookeeper실행 $ ./bin/kafka-zook..

[Kafka] 7. Apache Flume
Back-End/Kafka 2023. 4. 25. 09:17

Apache Flume Apache Flume은 오픈소스 프로젝트로 개발된 로그 데이터를 수집 기술이다. 여러 서버에서 생산된 대용량 로그 데이터를 효과적으로 수집하여, HDFS과 같은 원격 목적지에 데이터를 전송하는 기능을 제공한다. 구조가 단순하고 유연하여 다양한 유형의 스트리밍 데이터 플로우(Streaming Data Flow) 아키텍처를 구성할 수 있다. flume은 Source, Channel, Sink 세 가지 요소로 구성 데이터가 추출되는 Source Flume에 데이터를 저장하는 Sink Source에서 Sink or 저장소로 데이터를 전달하는 Channel Flume 설치 https://flume.apache.org/download.html 사이트에 들어가서 다운받을 수 있다. 구현 so..

article thumbnail
[Kafka] 6.Kafka Streams
Back-End/Kafka 2023. 4. 25. 09:16

#Kafka Streams kafka streams는 입출력 데이터가 카프카 클러스터에 kafka에 저장된 데이터를 처리하고 분석하기 위해 개발된 클라이언트 라이브러리다. Kafka Stremas는 클라이언트에서 쓰기가 간편하고, 자바와 스칼라 어플리케이션을 표준으로 작성하고 배포하고, Kafka 서버-사이드 클러스터 기술의 이점을 결합하여 응용프로그램의 확장성과, 탄력성, 내결합성, 분산성등을 향상시킨다. 또한 이벤트 시간과 처리 시간을 분리하여 다루며, 다양한 옵션을 지원하여 실시간 분석을 간단하고 효율적으로 지원한다. kafka streams를 설명하기 전 몇 가지 개념 정리 Stream(스트림) : 연속적으로 업데이트되고 무제한으로 진행되는 과정을 의미한다. (무제한은 크기 제한이 없다는 뜻이다...

article thumbnail
[Kafka] 5. kafka topic message 처리하기
Back-End/Kafka 2023. 4. 25. 09:02

kafka topic message 처리하기 Producer와 Consumer를 통해 topic의 메시지를 처리해본다. 요구사항 임의의 숫자 2개를 설정하여 2개의 숫자 범위 값에 들어오면 valid topic으로 존재하지 않으면 invalid topic으로 분류한다. 초기 숫자가 10 20이면 10~20 사이의 수는 valid 그렇지 않으면 invalid topic으로 이동 원본메시지(raw-message)는 kafka topic에서 각각 이벤트를 읽는다. 이벤트를 검사하고 올바른 메시지는 valid-message topic에 쓰고, 잘못된 메시지는 invalid-message 토픽에 기록한다. [구성도] raw-messages topic에서 이벤트를 읽고, 메시지를 검사하고, 조건 범위 내에 숫자가 ..

article thumbnail
[Kakfka] 4. Kafka clusters
Back-End/Kafka 2023. 4. 24. 09:48

Kafka clusters Cluster 의 개념 cluster는 여러대의 시스템이 한대의 시스템처럼 동작하는 시스템의 집합이라고 할 수 있다. 클러스터 모드로 사용하면 2가지 장점이 있다. 첫 번째는 병렬처리(Parallelism)를 통해 클러스터 맴버 사이에서 동시에 작업을 수행한다. 두 번째는 중복성(redundancy)인데 하나의 카프카 노드에 장애가 나면 다른 노드에 의해 접근이 가능하도록 안정성을 제공한다. kafka cluster 구축 방법 kafka에는 세 가지 구축 방법이 있다. Single Node - Single Broker Single Node - Multiple Broker Multiple Node - Multiple Broker 1. Single Node - Single Brok..

article thumbnail
[Kakfa] 3. Kafka Producer & Consumer API
Back-End/Kafka 2023. 4. 24. 09:39

Kafka Producer & Consumer API producer API는 응용 프로그램에서 Kafka 클러스터로 데이터 스트림을 보낼 수 있다. Consumer API는 응용프로그램에서 Kafka 클러스터에서 topics에 대하여 데이터 스트림으로 받을 수 있다. kafka consumer, producer 를 자바로 구현하려면 kafka-clients 라이브러리가 필요하다. ## maven org.apache.kafka kafka-clients 2.2.1 ## gradle compile group: 'org.apache.kafka', name: 'kafka-clients', version: '2.2.1' kafka client는 kafka cluster에 있는 레코드들을 기록한다. Producer..

article thumbnail
[Kakfa] 2, Kafka QuickStart
Back-End/Kafka 2023. 4. 24. 09:31

Kafka QuickStart Step 1: 카프카 다운로드 아파치 카프카를 다운로드 받는다. (버전 2.12-2.2.0) Download 다운을 다 받으면 압축을 풀고 폴더로 가면 아래와 같이 파일 목록들을 볼 수 있다.(폴더명은 kafka_2.12-2.2.0에서 kafka_2.12로 변경함) $ tar -xzf kafka_2.12-2.2.0.tgz $ cd kafka_2.12-2.2.0 user@ubuntu-vm-01:~/Documents/kafka_2.12$ ls bin config libs LICENSE logs NOTICE site-docs bin 폴더에는 실행파일들이 담겨있다. user@ubuntu-vm-01:~/Documents/kafka_2.12$ cd bin user@ubuntu-vm-0..

[Kafka] 1. Apache Kafka 개념 및 소개
Back-End/Kafka 2023. 4. 24. 09:24

Apache Kafka 개념 및 소개 Apache Kafka는 LinkedIn에서 개발된 분산 메시징 시스템으로, 대용량 실시간 로그처리에 특화된 아키텍처 설계를 통해 기존 메시징 시스템보다 우수한 TPS를 보여주고 있다. Kafka는 RabbitMQ와 메시지 큐와의 성능에서 차이가 나며, 클러스터 fail-over, replication과 같은 여러가지 특징을 가지고 있다. Kafka의 기본 구성요소 및 동작 Kafka의 구조 Kafka는 발행-구독(publish-subscribe)모델을 기반으로 동작 크게 producer, consumer, broker로 구성 topic을 생성하고 producer가 topic 메시지를 전달한다 > Broker는 Zookeeper를 통해 Topic별로 적재(파티션 별로..

[Kafka] Intro. Messaging System
Back-End/Kafka 2023. 4. 24. 09:18

Messaging System Messaging System은 하나의 프로그램에서 다른 프로그램으로 데이터를 전달할 수 있도록 돕는 시스템이다. Messaging System의 기본 원칙 Loose Coupling(느슨한 연계) : Application 상호간에 의존성을 최소화 하는 것으로 한쪽에서 변경이 발생할 경우 다른 프로그램은 영향을 받지 않는 것. Common Interface(공용 인터페이스 정의) : Application간에 데이터를 교환하기 위해 공용으로 규정된 데이터 형식을 정의한다. Latency(응답속도) :메시지 전송부터 수신까지의 소요시간을 말한다. reliability(신뢰성) : 일시적인 가용성 문제가 발생해도 정보를 교환하는 Application에는 영향을 주지 않는다. 기본..