카프카 생태계 

프로듀서에서 데이터 넣고 토픽 데이터 들어가서 컨슈머가 데이터를 가지고 간다. 

토픽 데이터를 토픽에 넣고 싶을때 스트림즈를 쓴다. 

오픈소스 아파치 카프카에 포함되어 있는 툴이다. 

아파치 카프카의 릴리즈 동일한 구조로 되어있다. (기능을 같이 쓰려면 같은 오픈소스 아파치 카프카 배포되는것만)

커넥트는 데이터 파이프라인 운영 핵심 툴이다. 

소스 커넥터 (프로듀서)

싱크 커넥터 (컨슈머)

특정 데이터 소스에서부터 커넥트 (소스) 읽어와서 토픽에 넣고 커넥트(싱크)는 타겟으로 보내는 컨슈머 역할을 한다. 

반복적으로 여러번 생성할 수 있는것이 장점이여서 카프카 클러스터에서 따로 운영하지 않는다. 

mm2 툴 (미러 메이커 툴)

클러스터 단위로 카프카 운영할 때 토픽 데이터를 완벽하게 복제하기 위해서 사용 

https://moonsupport.oopy.io/post/22

카프카 브로커와 클러스터

주키퍼는 카프카 클러스터 운영하기 위한 애플리케이션 

카프카가 2버전 까지는 반드시 주키퍼 필요 3버전 부터는 카프카 클러스터에서 쥬키퍼 없어도 운영 가능 

브로커는 데이터를 분산 저장하여 장애가 발생하더라도 안전하게 사용할 수 있도록 도와주는 애플리케이션

컨슈머 입장에서 데이터를 안정하게 사용할 수 있다. 

여러개의 카프카 클러스터가 연결된 주키퍼

주키퍼 앙상블에는 여러 종류의 클러스터를 동시에 운영가능

https://velog.io/@och5351/Kafka-%EB%B8%8C%EB%A1%9C%EC%BB%A4-%ED%81%B4%EB%9F%AC%EC%8A%A4%ED%84%B0-%EC%A3%BC%ED%82%A4%ED%8D%BC

kafka-console-consumer.sh

토픽으로 전송한 메시지를 확인해볼 수 있다. --bootstrap-server 에서 카프카 클러스터 정보, --topic 토픽 이름이 필요하다. from-beginning 옵션을 주면 토픽에 저장된 가장 처음 데이터부터 끝까지 출력한다. (FIFO)

메시지 키를 확인하고 싶을 때, (값을 구분하고 싶은 용도) property 옵션을 주면된다. -> key-separator 

bin/kafka-console-consumer.sh --bootstrap-server my-kafka:9092 \ 
--topic hello.kafka \
--property print.key=true \
--property key.separator="-" \
--from-beginning

--max-messages : 최대 컨슘 메시지 개수 설정 

데이터가 수없이 들어올 때 계속 프린트 되기 때문에 많은 데이터가 보인다. 특정 토픽에 대해 데이터를 보고 싶을 때 쓴다. 

--partition 옵션

특정 파티션만 컨슘할 수 있다. 

topic은 파티션 한개 가지고 있다. (최소) 파티션이 여러개 있으면 특정 파티션에 대해서만 데이터를 계속 가지고 오고 싶을 때가 있다. 
--partition 2 이런식으로 숫자를 주면 된다. 

--group 

그룹 옵션을 사용하면 컨슈머 그룹을 기반으로 kafka-console-consumer 가 동작한다. 컨슈머 그룹으로 토픽의 레코드를 가져갈 경우 어느 레코드 까지 읽었는지에 대한 데이터가 카프카 브로커에 저장된다. 커밋을 하게 된다! 

consumer group 이란것을 사용하게 되면 어느 record 까지 읽었는지에 대한 offset을 __consumer_offsets 에 남긴다. 

여기서 컨슈머 랙을 확인해볼 수 있는데 지연의 정도를 나타낸다. (마지막 레코드의 오프셋 과 가져간 레코드의 오프셋의 차이) 
이 정보는 컨슈머의 상태를 조회할 때 유용하다. 

오프셋 리셋이란 기능도 존재하는데 최신의 파티션의 데이터를 조회해볼 수 있는 기능이다. (왜냐하면, 토픽의 데이터는 삭제되지 않고 리텐션 기간에 삭제되기 때문에)

kafka-producer-perf-test.sh/ kafka-consumer-perf-test.sh 

퍼포먼스를 측정하는데 사용된다. 네트워크가 정상적으로 처리가 되고 있는지 확인해본다. 

'IT' 카테고리의 다른 글

Mongo 7 - 집계  (0) 2024.03.11
6장 - 키-값 저장소 설계  (0) 2024.02.12
대규모 시스템 설계 기초 - 5장  (0) 2024.02.04
대규모 시스템 설계 기초 - 4장  (1) 2024.01.30
1/21 개발일기 (clustered index, non-clusted index)  (0) 2024.01.21