Kafka flow diagrams
<img1>Kafka 4가지 core APIS + Legacy APIs
Producer API
애플리케이션이 Producer API를 이용해서 kafka 클러스터에 데이터 스트림을 보낼때 사용하는 API
즉, Producer API를 사용해서 kafka 클러스터의 kafka broker로 메시지(topics)를 보내는 것을 말함.<img2>
Producer API를 사용하기 위한 설정
<dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka-clients</artifactId> <version>0.10.2.0</version> </dependency>
예제 코드
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();
Consumer API
- 애플리케이션이 Consumer API를 이용해서 kafka 클러스터에서 데이터 스트림을 가져올 때 사용하는 API
즉, Consumer API를 사용해서 kafka 클러스터의 kafka broker로 부터 메시지(topics)를 가져옴.
<img3>
- Consumer API를 사용하기 위한 설정
<dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka-clients</artifactId> <version>0.10.2.0</version> </dependency>
- 애플리케이션이 Consumer API를 이용해서 kafka 클러스터에서 데이터 스트림을 가져올 때 사용하는 API
즉, Consumer API를 사용해서 kafka 클러스터의 kafka broker로 부터 메시지(topics)를 가져옴.
Streams API
- 0.10.0.0 버전부터 공개됨
- 애플리케이션이 하나 이상의 토픽에서 입력스트림을 읽고 변환해서 하나 이상의 출력 토픽으로 스트림을 보낼 때 사용하는 API
<img4>
- 라이브러리이므로 사용자가 직접 구현해야 함
- High-level-DSL API 와 Low-level API 2가지 형태를 지원함.
- Stream API를 사용하기 위한 설정
<dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka-streams</artifactId> <version>0.10.2.0</version> </dependency>
Connect API
Data source -> (Pull) Kafka Connect -> Kafka -> (Push) Kafka Connect -> Data sink
Connector 를 이용해서 재사용가능한 Producer 또는 Consumer를 kafka topic에 연결할 수 있음.
예를 들어 RDB에 대한 Connector는 Table에 대한 모든 변경사항들에 대한 캡쳐가 가능함.Producer, Consumer 가 애플리케이션 수행에 집중할 수 있도록 함 (decoupled)
the Connect API decoupled from the applications that consume or produce the data it loadskafka에서 데이터 스트리밍을 하기 위한 확장 가능하고 강력한 API
센서 역할을 하며 실시간으로 발생하는 이벤트를 로드/언로드 하는 역할을 함
Legacy APIs
참고 사이트