카프카는 토픽을 통해 메시지 송수신을 중개해주는 플랫폼입니다. 구독과 소비 형태를 띄는 pubsub 구조를 가지며 데이터를 공급하는 쪽을 producer라고 부르고 데이터를 수신하는 쪽을 consumer라고 부릅니다.
사용자는 프로듀서를 통해 Kafka에 메시지를 보내게 되는데 해당 데이터는 ProducerRecord 형태로 전송되어야 합니다.
컨슈머는 프로듀서가 카프카로 발행한 메시지를 가져와서 소비하는 역할을 담당합니다. 프로듀서가 아무리 빠르게 메시지를 발행해도 컨슈머가 소비하지 않으면 결국 처리가 지연되므로 컨슈머는 카프카 전체 동작에서 매우 중요한 부분을 담당합니다.컨슈머가 카프카로 메
카프카 기초에서 설명한 리플리케이션에 대해서 조금 더 상세히 설명하겠습니다.카프카는 리플리케이션 기능을 통해 파티션을 복제해서 브로커에 분산하여 저장합니다. 리플리케이션을 통해 브로커에 장애가 발생해도 복제된 데이터를 통해 끊기지않고 안정적으로 서비스가 운영됩니다.
카프카의 컨트롤러는 리더 선출 역할을 맡고 있습니다. 리더 브로커에 장애가 발생해서 새롭게 파티션의 리더를 선출해야 할 경우 카프카는 컨트롤러를 통해 장애가 난 파티션의 ISR 리스트 중에서 리더를 선출하여 리더 역할을 위임합니다.리더를 선출하기 위해서 ISR 정보는
카프카의 토픽으로 들어오는 메시지는 모두 세그먼트라는 파일로 저장됩니다. 세그먼트에는 메시지의 내용뿐만 아니라 메시지의 키, 밸류, 오프셋, 메시지 크기 같은 부가 정보도 같이 저장되며 브로커의 로컬 디스크에 저장되게 됩니다.로그 세그먼트는 최대 크기는 기본적으로 1G
사이트에 들어가면 카프카를 버전별로 다운받을 수 있습니다.저는 현재 최신버전인 3.3.2 버전을 다운받았습니다. 카프카 다운로드카프카 파일을 원하는 위치에 압축 해제하면 아래와 같은 파일들이 나옵니다
토픽은 파티션으로 나누어지고, 파티션은 어플리케이션의 컨슈머와 연결되고, 컨슈머는 레코드를 읽어들여 데이터를 처리합니다.파티션의 개수는 데이터 처리량과 깊은 관련이 있습니다.위에서 적었듯이 파티션은 컨슈머와 연결되는데, 파티션의 개수가 많아지면 많아질수록 1:1로 매핑