본문 바로가기

Kafka4

Kafka exactly-once delivery 지원 메시지 시스템들의 메시지 전송 방식에는 적어도 한 번 전송(at-least-once), 최대 한 번 전송(at-most-once), 정확히 한 번 전송(exactly-once)이 있습니다. 1) 적어도 한 번 전송(at-least-once) Kafka(브로커)는 첫 번째 메시지를 기록하고 잘 받았다는 ACK를 프로듀서에게 전송하려고 합니다. 하지만 네트워크 오류 또는 브로커 장애가 발생하여 결국 프로듀서는 메시지에 대한 ACK를 받지 못합니다. 메시지를 전송한 후 브로커로부터 ACK을 받지 못한 프로듀서는 브로커가 메시지를 받지 못했다고 판단해 메시지를 재전송합니다. 프로듀서는 메시지를 보내고 그에 대한 ACK를 받지 못했으므로 브로커가 메시지를 받지 못했다고 판단하지만 브로커는 메시지를 기록했으므로 장.. 2022. 9. 3.
Kafka란? (3) 내부 동작 원리 replication/controller/log segment 카프카의 내부 동작 원리와 구현에서 가장 중요한 부분 중 하나는 리플리케이션 동작이다. 1. 카프카 리플리케이션 카프카는 안정성을 확보하기 위해 리플리케이션이라는 동작을 한다. 1.1 리플리케이션 동작 개요 describe 옵션을 이용해 토픽의 상세보기 출력 $ kafka-topics.sh --bootstrap-server ... --topic test_topic --describe [output] Topic: test_topicpartitionCount:1ReplicationFactor:3Configs:segment.bytes=100324543 Topic: test_topicpartition:0Leader:1Replicas:1,2,3Isr:1,2,3 위에서 알 수 있는 내용은 파티션 0의 리더는 브로커.. 2022. 8. 7.
[번역] Kafka Throughput&Latency Best Practices 공식문서 출처는 아래에 있는 confluent 공식 문서입니다. 1. Optimizing for Throughput 처리량을 최적화하기 위해 producer와 consumer는 주어진 시간 내에 가능한 한 많은 데이터를 이동시켜야 한다. 높은 처리량을 얻으려면 데이터가 이동하는 속도를 최대화 해서 가장 빠른 속도로 만들어야 한다. Number of Partitions topic partition은 카프카의 병렬화 단위이다. 생산자는 병렬로 다른 파티션에 메시지를 전송하고, 병렬처리된 서로 다른 브로커를 지나, 병렬 처리된 서로 다른 컨슈머들에게 소비된다. 일반적으로 토픽 파티션이 많은수록 처리량이 증가한다. 처리량을 최대화하려면 병렬 처리된 브로커들에게 전해질 충분한 수의 파티션이 필요하다. 무작정 파티션의 수를.. 2022. 7. 29.
Kafka란? (1) | 아키텍처, 핵심 개념 Kafka? 메시지 발행/구독 시스템이다. 발행된 시스템을 저장하고 중계하는 역할을 브로커(broker)가 수행한다. * 데이터를 메시지 발행자가 직접 구독자에게 보내지 않는다. 대신 발행자가 메시지를 구분해서 발행/구독 시스템에 전송하면 구독자가 특정 부류의 메시지를 구독할 수 있게 해준다. 카프카의 데이터는 지속해서 저장하고 읽을 수 있으며, 시스템 장애에 대비하고 확장에 따른 성능 저하를 방지하기 위해 데이터를 분산처리 할 수 있다. 카프카의 메시지는 토픽의 파티션에 저장되는데, 데이터를 저장할 파티션을 결정하기 위해 일관된 해시 값으로 키를 생성한다. 따라서 같은 키를 갖는 메시지는 항상 같은 파티션에 저장된다. [배치] 효율성을 위해서 여러 개의 메시지를 모아 배치 형태로 파티션에 저장하므로 네.. 2022. 3. 4.
반응형