[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
며칠 전, 우아한형제들 임동준 님의 유튜브 영상을 보다 마음에 들어오는 메시지를 들었다. 영상은 AI에 대한 이야기였지만, 그 과정에서 나온 이 조언이 더 깊게 남았다.
... 더 보기최근에 코딩 IDE와 AI 에이전트들이 우후죽순 출시되면서, AI에게 프로젝트에 대한 중요한 정보와 규칙들을 알려주기 위한 방식들도 난립하고 있었는데요. 이것들이 이제 AGENTS.md 로 통일될 것 같습니다.
... 더 보기"
... 더 보기디자인패턴, 리팩토링, 클린 아키텍처 등등의 책들은 전공서적 보듯이 보는게 아니라 추리소설 보듯이 보는 것임. 이런 책은 추리소설처럼 일부 논리적으로 사고 할 수 있는 능력을 길러주긴 하지만, 기본적으로는 재미로 보는 것임. 경험적인 정보이지 과학적인 지식이 아님을 명심해야 함.
개발을 하다 보면 할 수 있는 일과 하지 말아야 하는 일이 나뉘는것 같아요. 대부분의 일들을 할 수 있는 일들이고, 사실 안되는 일들은 거의 없을 수도 있는거 같아요.
... 더 보기