• Kafka flow diagrams

    <img1>

  • Kafka 4가지 core APIS + Legacy APIs

    1. Producer API

      1. 애플리케이션이 Producer API를 이용해서 kafka 클러스터에 데이터 스트림을 보낼때 사용하는 API
        즉, Producer API를 사용해서 kafka 클러스터의 kafka broker로 메시지(topics)를 보내는 것을 말함.
        <img2>

      2. Producer API를 사용하기 위한 설정

                <dependency>
                    <groupId>org.apache.kafka</groupId>
                    <artifactId>kafka-clients</artifactId>
                    <version>0.10.2.0</version>
                </dependency>
        
      3. 예제 코드

         Properties props = new Properties();
         props.put("bootstrap.servers", "localhost:9092");
         props.put("acks", "all");
         props.put("retries", 0);
         props.put("batch.size", 16384);
         props.put("linger.ms", 1);
         props.put("buffer.memory", 33554432);
         props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
         props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
        
         Producer<String, String> producer = new KafkaProducer<>(props);
         for(int i = 0; i < 100; i++)
             producer.send(new ProducerRecord<String, String>("my-topic", Integer.toString(i), Integer.toString(i)));
        
         producer.close();
        
    2. Consumer API

      1. 애플리케이션이 Consumer API를 이용해서 kafka 클러스터에서 데이터 스트림을 가져올 때 사용하는 API 즉, Consumer API를 사용해서 kafka 클러스터의 kafka broker로 부터 메시지(topics)를 가져옴.<img3>
      2. Consumer API를 사용하기 위한 설정
                <dependency>
                    <groupId>org.apache.kafka</groupId>
                    <artifactId>kafka-clients</artifactId>
                    <version>0.10.2.0</version>
                </dependency>
        
    3. Streams API

      1. 0.10.0.0 버전부터 공개됨
      2. 애플리케이션이 하나 이상의 토픽에서 입력스트림을 읽고 변환해서 하나 이상의 출력 토픽으로 스트림을 보낼 때 사용하는 API <img4>
      3. 라이브러리이므로 사용자가 직접 구현해야 함
      4. High-level-DSL API 와 Low-level API 2가지 형태를 지원함.
      5. Stream API를 사용하기 위한 설정
                <dependency>
                    <groupId>org.apache.kafka</groupId>
                    <artifactId>kafka-streams</artifactId>
                    <version>0.10.2.0</version>
                </dependency>
        
    4. Connect API

      1. Data source -> (Pull) Kafka Connect -> Kafka -> (Push) Kafka Connect -> Data sink

      2. Connector 를 이용해서 재사용가능한 Producer 또는 Consumer를 kafka topic에 연결할 수 있음.
        예를 들어 RDB에 대한 Connector는 Table에 대한 모든 변경사항들에 대한 캡쳐가 가능함.

      3. Producer, Consumer 가 애플리케이션 수행에 집중할 수 있도록 함 (decoupled)
        the Connect API decoupled from the applications that consume or produce the data it loads

      4. kafka에서 데이터 스트리밍을 하기 위한 확장 가능하고 강력한 API

      5. 센서 역할을 하며 실시간으로 발생하는 이벤트를 로드/언로드 하는 역할을 함

    5. Legacy APIs

  • 참고 사이트

results matching ""

    No results matching ""