카프카

1. 카프카란?

뭐라고해야할까 2025. 2. 23. 21:59

분산 데이터 스트리밍 플랫폼

분산 : 하나의 서버가 아니라 여러 대의 서버(브로커)가 협력해서 데이터를 나누어 저장하고 처리
스트리밍 : 데이터를 저장함과 동시에 바로 소비할 수 있도록 설계 (데이터가 끊어지지 않고 지속적으로 흐르는 개념)
플랫폼 : 여러 시스템이 데이터를 주고받을 수 있도록 연결해 주는 중심 역할

카프카 파일시스템 기반 저장

카프카는 데이터를 저장할 때 메모리가 아니라 디스크에 저장함으로써 별도 설정없이 영속성 보장
디스크 I/O 비용이 상대적으로 높은데, 카프카 브로커의 로컬 디스크에 저장하지만 빠른 이유

  1. 순차 I/O
    랜덤 액세스 대비 150000배 빠르고 메모리 랜덤 액세스보다 빠르다
    원하는 데이터가 위치한 블록을 찾기 위한 시간(seek time) - 순차I/O 를 통해 최소화
    블록을 메모리에 카피하는 시간 - Zero-Copy는 CPU를 사용하지 않고 데이터를 직접 네트워크나 디스크로 전송하는 기술로 최소화
    read-ahead - 운영체제(OS) 또는 스토리지 시스템이 파일을 읽을 때, 예상되는 이후 데이터를 미리 읽어 캐시에 저장
    write-behind - 데이터를 즉시 디스크에 쓰지 않고, 일정 시간이 지나거나 버퍼가 가득 차면 한꺼번에 저장

  2. 페이지 캐시
    카프카는 메모리에 별도의 캐시를 구현하지 않고 OS의 페이지 캐시에 이를 모두 위임
    사용자 영역과 커널 영역의 중복 저장 없이 2배 정도의 캐시를 저장
  1. Zero Copy
    일반적으로 파일 시스템에 저장된 데이터를 네트워크로 전송할 때
    디스크 → Read Buffer (DMA ; Direct Memory Access)
    Read Buffer → Application Buffer (CPU)
    Application Buffer → Socket Buffer (CPU)
    Socket Buffer → NIC Buffer (DMA)
    전통적인 데이터 복사 방식은 4번의 컨텍스트 스위칭과 4개의 메모리 복사본이 생기면서 불필요한 복사와 시스템콜이 발생
    zero copy 를 사용하면, 커널 영역의 Read Buffer 에서 Socket Buffer로 직접 복사가 가능하여 효율적으로 데이터를 전송

출처
https://developers.hyundaimotorgroup.com/blog/131
https://medium.com/sjk5766/kafka-disk-i-o%EA%B0%80-%EB%B9%A0%EB%A5%B8-%EC%9D%B4%EC%9C%A0-899c4da5084

Pub/Sub 모델

TCP/IP 프로토콜 사용