들어가기 전 이 글은 실전 카프카 개발부터 운영까지 4장을 공부하며 정리한 글입니다. 4.1 카프카 리플리케이션 카프카는 초기 설계 단계부터 브로커 몇 대가 죽더라도 안정적으로 서비스 할 수 있도록 설계되었다. 카프카가 안정적으로 서비스 할 수 있는 이유는 바로 Replication 동작을 하기 때문이다. Replication은 복제를 의미한다. 즉, 하나의 브로커가 죽더라도 다른 브로커가 대신할 수 있도록 '복제' 해둔다. 4.1.1 리플리케이션 동작 개요 선요약을 하면 다음과 같다. 카프카는 토픽을 생성할 때 replication-factor를 이용해서 복제본을 몇개 생성할 지를 결정한다. 이 복제본은 원본이 파손되었을 때, 즉시 원본으로 대체해서 사용하는 녀석이다. replication-factor..
들어가기 전 이 글은 실전 카프카 개발부터 운영까지 5장을 공부하며 작성한 글입니다. Producer - Broker 통신 Producer는 Broker에게 메세지를 보낸다. Broker는 메세지를 받고, 그것을 잘 기록한 경우에 Producer에게 ACK를 내려준다. Producer는 ACK 신호를 받을 수 있고, 받은 ACK 신호를 참조해서 이후에 다음 일을 할 수 있다. 예를 들어 ACK 신호와 상관없이 다음 메세지 배치를 보낼 수도 있고, ACK가 잘못된 경우 다시 재전송을 해볼 수도 있다. 프로듀서의 전송 방법 프로듀서의 전송 Semantic은 다음 4가지가 존재한다. 그리고 아래에서 하나하나 어떻게 동작하는지를 살펴보고자 한다. at least once : 적어도 한번 전송. 중복 메세지 발생..
Kafka Consumer란 무엇인가? 카프카의 Consumer는 Broker로부터 메세지를 받아오는 객체다 Kafka Consumer의 구성 모든 Consumer는 고유한 그룹 ID를 가지는 Consumer Group에 소속되어야 한다. 같은 Consumer Group에 속한 파티션들끼리는 협력하면서 메세지를 읽어온다. 하나의 Consumer Group 내에서 한 Consumer는 여러 파티션을 읽어올 수 있다. 그렇지만 한 파티션을 여러 Consumer가 읽을 수는 없다. 한 파티션을 여러 Consumer가 읽을 경우, 어떤 메세지가 정상인지를 확인할 수 없기 때문이다. 따라서 Consumer 갯수
kafka-dump-log # 위 명령어를 이용해서 확인할 수 있음. $ $CONFLUENT_HOME/bin/kafka-dump-log 위 명령어를 이용해서 log를 찍어볼 수 있다. 실습 # 토픽 삭제 및 생성 $ kafka-topics --bootstrap-server localhost:9092 --delete --topic multipart-topic $ kafka-topics --bootstrap-server localhost:9092 --create --topic multipart-topic --partitions 3 # keyload.log 파일 생성하기 $ touch keyload.log $ for i in {1..2000} do echo "$i:test key message sent tes..