주니어 데이터 엔지니어 우솨's 개발일지

데이터 엔지니어링 64일차 TIL 본문

데브코스

데이터 엔지니어링 64일차 TIL

우솨 2024. 6. 30. 10:21

학습 내용

kafka CLI Tool 접근 방법
- docker ps로 Broker의 Container ID 파악
- 해당 컨테이너로 로그인 
=> docker exec -it Broker_Container_ID sh
- 다양한 클라이언트 툴 사용가능
- kafka-topics : Kafka-topics --bootstrap-server kafka1:9092 --list
- kafka-configs
- kafka-console-consumer : Command line을 통해 Topic에서 Message 읽기가 가능하다.
        
- kafka-console-producer : Command line을 통해 Topic을 만들고 Message생성이 가능하다.
        - kafka-console-producer --bootstrap-server kafka1:9092 --topic test_console


Kafka Producer 파라미터


Kafka Producer 동작


Kafka Consumer 파라미터


Consumer가 다수의 Partitions들로부터 읽어 오는 방법
- Consumer가 하나이고 다수의 Partitions들로 구성된 Topic으로부터 읽어야한다면 ?
        - Consumer는 각 Partition들로부터 라운드 로빈 형태로 하나씩 읽게 됨
        - 병렬성이 떨어지고 데이터 생산 속도에 따라 Backpressure가 심해질 수 있다.
        - Consumer Group을 통해 어느정도 해결가능
- 한 프로세스에서 다수의 Topic을 읽는 것 가능
        - Topic 수만큼 KafkaConsumer 인스턴스를 생성하고 별도의 Group ID와 Client ID를 지정해야한다.

Consumer Group이란?
- Consumer가 Topic을 읽기 시작하면 해당 Topic내 일부 Partition들이 자동으로 할당됨
- Consumer의 수보다 Partition의 가 더 많은 경우, Partition은 라운드 로빈 방식으로 Consumer들에게 할당됨
        - 이를 통해 데이터 소비 병렬성을 늘리고 Backpressure를 경감
        - Consumer가 일부 중단되더라도 계속해서 데이터 처리 가능
- Consumer Group Rebalancing
        - 기존 Consumer가 무슨 이유로 사라지거나 새로운 Consumer가 Group에 참여하는 경우 Partition들이 다시 지정이 되어야한다.
        - 이를 Consumer Group Rebalancing이라고 부르며 Kafka에서 알아서 수행해준다. 

ksqlDB
- REST API나 ksql 클라이언트 툴을 사용해서 Topic을 테이블처럼 SQL로 조작