본문 바로가기

Data Engineering/Kafka3

Kafka Partition key를 사용하여 데이터 순서대로 처리하기 Kafka에서 하나의 Topic은 여러 Partition으로 파티셔닝 될 수 있다. 하나의 Partition은 동일한 Consumer Group 내에서 하나의 Consumer에 의해 처리되기 때문에, Partition의 개수를 늘려 Consumer Group에 대해 하나의 Topic에 대한 처리량을 늘릴 수 있다. (참고: Can multiple Kafka consumers read the same message from a partition?) (* 하지만 Partition을 무조건 늘리는건 좋지 않다 - 참고: How to Choose the Number of Topics/Partitions in a Kafka Cluster?) Topic의 어느 Partition에 적재될지는 publish 할 때 p.. 2023. 1. 12.
Kafka의 정확히 한 번 전달(exactly-once delivery) 분산 시스템 환경에서는 특히 EDA(Event-Driven Architecture)를 갖는 시스템 환경이라면 Message Broker를 사이에 두고 각 서비스가 메세지를 주고 받을 것이다. 이러한 아키텍처는 결합도를 낮추는 측면에서 엔지니어링에 장점을 갖지만 그와 동시에 여러가지 풀기 힘든 숙제들이 생기게된다. 분산 시스템에서는 오직 2가지 문제 밖에 없다. 2. 정확히 한 번 전달 1. 보장된 메세지 순서 2. 정확히 한 번 전달 이 글에서 말하고 싶은 내용은 Exactly-once delivery, 즉 정확히 한 번 전달이다. 분산 시스템 환경에서는 정확히 한 번 전달은 불가능하다라는 주장의 글이 있다. https://bravenewgeek.com/you-cannot-have-exactly-once.. 2022. 3. 19.
Docker Compose를 사용하여 Kafka 셋업하기 코드는 여기 참고 1개의 Zookeeper와 3개의 Kafka broker를 갖는 Cluster version: '3.6' services: zoo1: image: confluentinc/cp-zookeeper:6.2.1 container_name: cluster-zoo1 hostname: zoo1 ports: - "2181:2181" environment: ZOOKEEPER_CLIENT_PORT: 2181 ZOOKEEPER_SERVER_ID: 1 ZOOKEEPER_SERVERS: zoo1:2888:3888 kafka1: image: confluentinc/cp-kafka:6.2.1 container_name: cluster-kafka1 hostname: kafka1 ports: - "9092:9092".. 2022. 1. 28.