Cloud/kafka-core 9

Topic Segment

Kafka log , Segment카프카의 로그 메시지는 실제로는 segment로 저장이 된다.파티션은 단순히 파일 디렉토리만 되어 있고, 해당 파티션 디렉토리에 메시지 저장 segment를 file로 가지고 있다.파티션은 여러개의 segment로 구성되며 개별 segment는 데이터 용량이 차거나 일정 시간이 경과하면 close되고 새로운 segment를 생성하여 데이터를 연속적으로 저장한다.segment는 close 되면 더 이상 브로커가 write하지 않으며 read-only가 된다. 브로커는 여러개의 segment중 단 하나의 active segment에만 write와 read를 수행한다. 하나의 파티션은 단 하나의 active segment를 가진다. log.segment.bytes (broke..

Cloud/kafka-core 2024.07.09

Multi Node Kafka Cluster

멀티노드 카프카 클러스터분산 시스템으로서 카프카의 성능과 가용성을 함께 향상 시킬 수 있도록 구성스케일 아웃 기반으로 노드 증설을 통해 카프카의 메시지 전송과 읽기 성능을 거의 선형적으로 증가 시킬 수 있음데이터 복제를 통해서 분산 시스템 기반에서 카프카의 최적 가용성을 보장 멀티브로커 설치하기...broker.id=3...listeners=PLAINTEXT://:9094...# A comma separated list of directories under which to store log fileslog.dirs=/home/tony/kafka/data/kafka-logs-03server.properties를 총 3개 생성한다.새로운 zookeeper.properties를 만들고 아래처럼 변경해준다.# ..

Cloud/kafka-core 2024.07.02

Kafka File Producer App + File Consumer App

file에 텍스트가 추가될  때 마다 Producer 메시지를 전송하도록 구현한다.public class FileEventSource implements Runnable { public static final Logger logger = LoggerFactory.getLogger(FileEventSource.class.getName()); //주기적으로 file을 모니터할 기간. ms 단위. private long updateInterval; //모니터할 File 객체 private File file; //file에 변경사항이 발생했을 때 Producer를 이용하여 메시지를 전송하는 EventHandler private EventHandler eventHandler;..

Cloud/kafka-core 2024.06.30

Kafka Consumer - 03

Consumer의 subscribe, poll , commit 로직Consumer는 subscribe()를 호출하여 읽어 들이려는 토픽을 등록한다.Consumer는 poll 메소드를 이용하여 주기적으로 브로커의 토픽 파티션에서 메시지를 가져온다.메시지를 성공적으로 가져왔으면 commit을 통해서 __consumer_offsets에 다음에 읽을 offset을 기재한다.group meta data에 어떤 consumer가 어떤 partition을 consume하고 있다가 나와있지 __consumer_offsets에 나와있지 않다. 중복 읽기가 발생하는 상황consumer1이 poll만하고 아직 commit을 하지 않은 상황에서 고장이나서 종료되면conusmer2가 읽어야하는 부분은 5부터 읽어야된다. 읽기 ..

Cloud/kafka-core 2024.06.18

Kafka Consumer - 02

Group Coordinator + Consumer RebalanceConsumer는 rebalancing이 진행이되면 consumer는 소비하는것을 멈추고 rebalancing에만 집중한다.이때 producer는 계속 생산이 되므로 , rebalancing이 끝나면 안 읽었던것들을 다 읽어야한다. 이 과정에서 오래걸리나 문제가 발생하는 경우가 생긴다.Group Coordinator에서 Consumer가 새로 추가되거나 종료될때 , 새로운 partition이 추가될 때 , consumer heartbeat에서 응답이 오지 않을 경우 , rebalancing을 수행하라고 Consumer group의 leader consumer에게 명령을 내린다.consumer가 group에 추가및 삭제 될 때마다 stat..

Cloud/kafka-core 2024.06.04

Kafka Consumer - 01

Consumer 개요브로커의 Topic 메시지를 읽는 역할을 수행한다.모든 Consumer들은 고유한 그룹아이디 group.id를 가지는 Consumer Group에 소속되어야 한다.개별 Consumer Group내에서 여러 개의 Consumer들은 토픽 파티션 별로 분배된다.Consumer는 subscribe()를 호출하여 읽어 들이려는 토픽을 등록한다.Consumer는 poll 메소드를 이용하여 주기적으로 브로커의 토픽 파티션에서 메시지를 가져온다.메시지를 성공적으로 가져왔으면 commit을 통해서 _consumer_offsets 에 다음에 읽을 offset 위치를 기재한다. KafkaConsumer는 Fetcher, ConsumerClientNetwork등의 주요 내부 객체와 별도의 Heart Be..

Cloud/kafka-core 2024.05.16

Kafka Producer - 02

acks 값 에 따른 Producer의 전송 방식 차이 이해Producer는 Leader broke가 메시지 A를 정상적으로 받았는지에 대한 Ack 메시지를 받지 않고 다음 메시지인 메시지 B를 바로 전송메시지가 제대로 전송되었는지 브로커로 부터 확인을 받지 않기 때문에 메시지가 브로커에 기로되지 않더라도 재 전송하지 않음메시지 손실의 우려가 가장 크지만 가장 빠르게 전송할 수 있음IOT 센서 데이터 같이 손실에 민감하지 않을 때사용함Producer는 Leader broker 가 메시지 A를 정상적으로 받았는지에 대한 Ack 메시지를 받은 후 다음 메시지인 메시지B를 바로 전송. 만약 오류 메시지를 브로커로 부터 받으면 메시지 A 재전송메시지 A가 모든 Replicator에 완벽하게 복사되었는지의 여부는..

Cloud/kafka-core 2024.05.03

Kakfa Topic, Producer, Consumer

Topic , Parition , parallel processing a kafkatopic은 여러개의 parition로 이루어져 있고 producer가 보낸 message를 저장하게 된다.즉 topic은 partition으로 구성된 일련의 로그 파일이다.Rdbms 의 partitioned table과 유사하다.topic은 key value구조이고 value는 어떤 타입의 메시지도 가능하다 (Json, String, Object, ProtoBuf등)producer가 보낸 data는 topic에 offset이 순차적으로 증가하면서 저장이 된다. 계속 append 만되는것이다.중간에 껴서 update하고 그런것이 없다.개별 파티션은 정렬되고, immutable 일련의 레코드로 구성된 로그 메시지이다.개별 파..

Cloud/kafka-core 2024.04.11