본문 바로가기
  • 노션에서 삽질한 내용을 정리하는 블로그

kafka6

[Kafka] Idempotent Producer Idempotent Producer에 대하여 정리하는 글 참고: https://www.confluent.io/ko-kr/blog/exactly-once-semantics-are-possible-heres-how-apache-kafka-does-it/ Idempotent producer란 : 프로듀서로부터 들어오는 데이터가 카프카에 "정확히 딱 한번"만 쓰여지게 한다. 1. Exactly-once is a really hard problem "정확히 한 번 전송" 의 구현이 왜 어려운가하면, 딱 한 사이드에만 무언가를 설정해서 구현할 수 있는 것이 아니고 카프카 메세징 시스템과 클라이언트 어플리케이션 간에 cooperate가 되어야 EOS (Exactly once semantics) 가 가능하기 때문이다... 2022. 4. 10.
[Kafka] Consumer Group: Rebalancing 📌 kafka 및 Confluent 를 공부하며 정리하는 글 Consumer Group 의 Rebalancing consumer group 프로세스가 하나 돌아가는 중에 하나를 더 추가로 돌려보자. 첫 번째 돌고 있던 consumer group 로그에서 "Attempt to heartbeat failed since group is rebalancing" 를 통해 rebalancing 시작을 알 수 있다. 이어서 Rejoining 이 발생하고, 파티션이 나누어 할당된다. "Adding newly assigned partitions: coding_topic-2" 로그를 통해 첫번째 consumer 프로세스는 2 파티션을 할당 받음을 알 수 있다. 대상 토픽의 파티션 3개를 두 개의 consumer 가 나누어.. 2021. 8. 2.
[Kafka] Broker & Zookeeper 📌 kafka 및 Confluent 를 공부하며 정리하는 글 Producer와 Consumer는 자동으로 어떤 브로커에 데이터를 write할지, 어떤 브로커의 데이터를 read할지를 알게된다고 하였다. 어떻게 이러한 동작이 가능할까? Producer 와 Consumer 가 Borker를 발견해내는 방법을 알아보자. 1. Broker Discovery 모든 카프카 브로커는 "bootstrap server"라고 하는데, 하나의 broker에 접속만 하면 전체 클러스터에 접속할 수 있다는 것이다. 각 브로커는 모든 브로커뿐만 아니라 토픽, 파티션(metadata)을 알고 있다. 2. Zookeeper 브로커를 관리하며, 브로커의 리스트를 가지고 있다. 각 파티션에 대한 leader 브로커를 선정한다. 새로운 .. 2021. 5. 19.
[Kafka] Consumer 📌 kafka 및 Confluent 를 공부하며 정리하는 글 카프카에서 데이터를 읽어내는 방식을 알아보자. Consumer topic(이름으로 식별 가능)으로부터 데이터를 읽는다. producer가 자동으로 어떤 broker에 write해야 할지 인식하는 것과 같이, consumer 또한 어떤 broker로부터 데이터를 read 할지 자동으로 인식한다. broker 장애 발생 시, producer와 마찬가지로 consumer는 복구하는 방법을 안다. 데이터는 각 파티션 내에서 순서대로 read된다. consumer가 복수의 파티션을 read하는 경우, 그 파티션은 하나의 consumer에 의해 병행적으로 read된다. 순서에 대한 보장은 없음 (하나의 파티션 내에서는 순서에 맞게 read되지만) 1) C.. 2021. 5. 19.
[Kafka] Producer 📌 kafka 및 Confluent 를 공부하며 정리하는 글 카프카에서 데이터를 얻는 방법을 알아보자. Producer topic에 data를 write한다. 어떤 broker의 어떤 파티션에 write해야 할지 자동으로 인식한다. Broker에 장애가 난 경우, Producer는 자동으로 복구한다. 기본적으로(key가 없는 경우) Producer는 라운드 로빈 방식으로 파티션에 데이터를 write한다. 파티션의 개수에 따라 라운드 로빈된다. 1) acks strategy Producer는 data writes에 대한 확인 메세지를 받는데, 아래와 같이 3가지의 방법이 있다. acks=0 : 확인 메세지를 기다리지 않고 진행 (데이터 손실 가능) acks=1 : leader의 확인 메세지만 대기 (제한된.. 2021. 5. 19.
[Kafka] Topic 📌 kafka 및 Confluent 를 공부하며 정리하는 글 1. Topic (토픽) 이란? 토픽은 데이터 스트림과 비슷한 개념이다. 데이터베이스의 테이블과 비슷하다. (제약사항이 없는!) 카프카에서 원하는 만큼의 토픽을 만들 수 있고, 각 토픽은 이름으로 구별한다. 2. 토픽과 Partition (파티션), Offset(오프셋) 토픽은 파티션으로 쪼개진다! 각 파티션은 NUMBER를 가지는데(partition0, partition 1, 이렇게), 각 파티션은 순서를 갖게 된다. 하나의 파티션 안의 각 메세지는 0부터 순차적으로 증가하는 id(offset)를 가진다. 🔎 Topic Example: delivery_gps 여러 배달 오토바이가 배달 중인 비즈니스에서 카프카를 사용한다고 가정해보자. 각 배달.. 2021. 5. 19.