[java] 카프카는 왜 빠를까?
frogred8
이벤트 기반 아키텍쳐를 구성하기 위해서는 중심이 되는 메시징 서비스가 필요하고
보통 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/
다음 내용이 궁금하다면?
이미 회원이신가요?
2024년 5월 28일 오전 6:35
물
... 더 보기제가 리드하고 있는 조직(당근마켓 커뮤니티실)에서 백엔드 엔지니어를 채용 중이에요.
커뮤니티실에는 동네 이웃들의 이야기와 정보를 공유하는 동네생활팀, 이웃 간의 취미와 관심사를 연결하는 모임팀, 그리고 아파트 단지 생활을 더 편리하고 즐겁게 만들어 줄 단지팀이 있어요. 지금 내 동네에서 일어나고 있는 일들을 더 쉽게 즐기고 공유할 방법들을 찾는 일이라면 무엇이든 도전하여 실행에 옮겨요. 만드는 사람이 불편할수록 쓰는 사람은 편하다는 믿음으로 도전적인 문제를 풀어나갈 분과 함께하고자 해요.
... 더 보기저
... 더 보기