ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 12 days of Apache Kafka - 7. Consumers
    Kafka 2021. 1. 17. 10:12

    www.youtube.com/watch?v=Z9g4jMQwog0

    KafkaConsumer

    클러스터와 연결. 여러가지 설정을 map 으로 담는다. (몇몇 브로커들 주소, 보안 설정들... 등등)
    위는 KafkaProducer 사용원칙과 같다.

    ConsumerRecords

    consumer 를 통해서 데이터를 읽어보고, 여러 가지 방식으로 우리가 원하는 메세지만 취할 수 있다.
    해당 메세지를 consumerRecords 라는 곳에 받을 수 있다. 그리고 그 안에 consumerRecord 들이 들어있다.

    ConsumerRecord

    key-value pair

    우리는 위 세가지를 이용하여 다루지만 Consumer 는 많은 일을 한다.
    connection 관리, 클러스터의 metadata 업데이트 등등...
    그리고 몇가지의 특징들이 더 있다.

    Kafka 는 읽고나서 지우지 않는다. 그냥 읽을 뿐이다. 다른 message queue 들과 다르다.
    kafka 는 컨슈머 숫자를 늘리거나 줄이는 걸 자동으로 해준다.

    만약 컨슈머가 하나라면, 여러개의 파티션에서 메세지를 받을 것이다. 물론 순서대로 받을 것이다. 다만 파티션 내의 순서이고, 모든 파티션을 포함한 순서는 아니다.
    만약 컨슈머를 하나 늘린다면(같은 group id), 리밸런싱을 하여 메세지를 동일하게 받을 수 있게 한다. 이것은 컨슈머가 줄었을 때도 마찬가지다.

    10 partition, 10 consumer / 10 partition 11 consumer 

    11 개의 컨슈머를 가진다면, 1대는 지정되지 않는다. 따라서 파티션의 개수에 따른 컨슈머의 개수도 신경써야 한다.

    다음 전통적인 메세지 큐에 비해서 컨슈머의 개수를 조정할 때 ordering key by guarantee 를 보장 못하는데 카프카는 보장할 수 있다고 함.
    (하지만 이게 무슨 뜻인지 잘 모르겠음, scale out 을 잘할 수 있게 해주는 거 같긴 함)
    또한 토픽의 관점으로도 컨슈머 개수가 조정될 때 순서를 보장할 수 있게 도움을 준다고 함.

    반응형
Designed by Tistory.