728x90

Kafka 5

Stream Processing With Kafka #5

- 이제 클러스터에서 토픽을 생성해보자. KAFKA_ADVERTISED_LISTENERS에 post를 19091로 설정했기 때문에 bootstrap-server를 localhost:19091로 설정하고, "first-cluster-topic"이라는 이름으로 토픽을 생성했다. 파티션은 3개를 생성했고, replication-factor는 1로 설정했다. docker exec -it [컨테이너ID] kafka-topics --bootstrap-server=localhost:19091 --create --topic first-cluster-topic --partitions 3 --replication-factor 1 - kafdrop에서 확인해 보면, 아래와 같이 토픽이 잘 생성된 것을 볼 수 있다. - CL..

Kafka 2023.05.07

Stream Processing With Kafka #4

- 이제 도커를 사용해 Kafka 클러스터를 만들어 실제 분산환경과 같이 kafka를 사용해 볼 것이다. 우선 kafka와 zookeeper를 stop하고 netstat를 사용해서 제대로 작동 중지했는지 확인하자. - 이후 docker-compose.yaml 파일을 작성할 것이다. 아래와 같이 코드를 짜고 도커 데스크탑을 실행해준 다음, docker-compose up을 해주면 컨테이너가 올라온 것을 볼 수 있을 것이다. 이로써 zookeeper 클러스터를 생성하였다. version: '3' services: zookeeper: image: zookeeper:3.8 hostname: zookeeper ports: - "2181:2181" environment: ZOO_MY_ID: 1 ZOO_PORT: 2..

Kafka 2023.05.07

Stream Processing With Kafka #3

- 이제 Kafka를 사용하여 직접 프로그래밍을 해볼 것이다. 우선 링크에서 kafka를 다운로드하자. (kafka 3.4.0, Scala 2.13버전을 사용) (만약 jdk가 설치되어 있지 않으면 설치 후 환경변수 설정까지 해야함) - 압축을 풀고 "~/user" 디렉토리에 옮긴다. 이후 Kafka 설정 파일을 수정한다(./config/server.properties) 1. log.dirs를 원하는 디렉토리로 수정 2. host와 port를 설정 - 이제 Zookeeper를 실행하고 (port:2181) (kafka_test) C:\Users\subo0\kafka_2.13-3.4.0\bin\windows>zookeeper-server-start.bat ../../config/zookeeper.prope..

Kafka 2023.05.07

Stream Processing With Kafka #2

- 이전 포스트의 내용을 좀 더 자세하게 알아보자. - Kafka의 토픽은 파티션의 그룹이고, 디스크에는 파티션 단위로 저장된다. 각 파티션마다 메시지(commit log)가 쌓이게 되는데, 이 메시지는 정렬되어 있고 불변성을 가진다. 또한 파티션의 모든 기록들을 Offset이라는 ID를 부여받는다. - Kafka의 메시지는 Byte의 배열이며 String, JSON, Avro를 사용한다. Avro는 직렬화되어 성능을 높인 스키마를 표현하는 JSON이라고 생각하면 된다. 메시지의 크기에는 제한이 없지만 성능을 위해 작게(KB단위) 유지하는 것을 추천한다. - 데이터는 사용자가 지정한 시간(Retention Period)만큼 저장한다. 또한 토익별로 지정도 가능하다. Consumer가 데이터를 받아가고 나..

Kafka 2023.05.05

Stream Processing With Kafka #1

- 기존 스트리밍 프로세싱을 하려면 아래 그림과 같이 시스템을 더할수록 복잡해지는 문제가 있었다. 여기서는 여러가지 통신 프로토콜(HTTP, TCP, gRPC, MQ 등)을 지원해야 하고 각 데이터 포멧도 다르며, 무엇보다도 Point-of-failure가 많았다. 예를 들어 각 시스템 A,B,C의 신뢰도가 99%인 시스템을 묶으면 신뢰도가 97%까지 떨어진다. 이는 시스템이 커질 수록 신뢰도가 더 떨어지는 문제가 발생할 수 있다. - Kafka는 분산 스트리밍 플랫폼이다. Source 시스템(Producer)은 Kafka로 메시지를 보내고, Destination 시스템(Comsumer)은 Kafka로부터 메시지를 받는다. 또한 확장성이 있고, 장애 허용(fault tolerant)를 하며, 기존 시스템..

Kafka 2023.05.05