🏎 카프카는 왜 빠를까?

이벤트 기반 아키텍쳐를 구성하기 위해서는 중심이 되는 메시징 서비스가 필요하고

보통 kafka, rabbitmq, redis (pub/sub) 등의 솔루션을 도입하게 됩니다.


그 중 kafka 는 GC 로 인해 지연이 발생할 수 있는 JVM 기반으로 동작함에도 불구하고

VM 장비에서도 꽤 괜찮은 처리량을 보여줍니다.


이에 대한 궁금증을 순차적으로 알아가 볼 수 있는 좋은 글이 있어 공유드립니다.

글에서 정리한 Kafka 가 빠른 이유는 다음과 같습니다.


📌 저지연 I/O 사용

전송받은 메시지는 RAM을 사용하여 지연 시간을 낮추고, DISK를 최소한으로 사용.


📌 순차적 I/O 자료구조 사용 (log)

메시지 추가는 끝단에서 이뤄지고, 메시지 읽기는 consumer 마다 별도의 포인터를 두어 탐색 시간을 피하는 'log' 라는 데이터 구조 사용.


📌 zero-copy 적용

어플 영역의 데이터를 복사하는 과정없이 커널에 직접 전달하여 효율을 높임.


📌 수평 확장 시스템

단일 주제에 대해 여러 소비자로 분산 가능한 시스템.


📌 데이터 압축 및 일괄 처리

데이터를 묶음 단위로 관리하여 전송/관리 효율을 높이고, 이를 압축하여 보관/전송하는 구조.


특히 다른것보다 zero-copy 에 대해 꽤나 깊고 자세하게 설명하고 있는데요

자세한 설명과 벤치마크를 다룬 아티클들을 중간중간 첨부하여 읽는 재미가 있었습니다.


이에 대한 자세한 내용은 첨부드린 원문 링크를 참고해주세요.


📚 원문

  • https://frogred8.github.io/docs/034_why_is_kafka_fast/


[java] 카프카는 왜 빠를까?

frogred8

[java] 카프카는 왜 빠를까?

다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2024년 5월 28일 오전 6:35

 • 

저장 123조회 5,258

댓글 0