Kafka
아파치 카프카는 아파치 소프트웨어 재단이 스칼라로 개발한 오픈 소스 메시지 브로커 프로젝트이다. 이 프로젝트는 실시간 데이터 피드를 관리하기 위해 통일된, 높은 처리량, 낮은 지연시간을 지닌 플랫폼을 제공하는 것이 목표이다.
목적
카프카가 링크드인 요구 사항을 어떤 수단으로 실현했는지 살펴보자.
요구 사항
- 높은 처리량으로 실시간 처리한다.
- 임의의 타이밍에 데이터를 읽는다.
- 다양한 제품과 시스템에 쉽게 연동한다.
- 메시지를 잃지 않는다.
실현 수단
- 메시징 모델과 스케일 아웃형 아키텍처
- 디스크로의 데이터 영속화
- 이해하기 쉬운 API 제공
- 전달 보증
Message Queues
kafka는 왜 빠를까?
- kafka는 왜 빠를까? | GeekNews
- [원문] (java) 카프카는 왜 빠를까? | frogred8
- (@vwjdalsgkv 주석) 본문상 내용중 nio를 살짝 헷갈리신것같은데 nio는 non blocking io가 아니라 new io입니다. block이랑 non block 모두 지원해요
- [원문] (java) 카프카는 왜 빠를까? | frogred8
- 저지연 I/O 사용 (ram)
- 순차적 I/O 자료구조 사용 (log)
- zero-copy 적용
- 수평 확장 시스템
- 데이터 압축 및 일괄 처리
- file을 socket으로 복사할 때 발생하는 부하를 개선한 os 지원 인터페이스
- linux에서는 sendfile 명령
- java에서 nio패키지에 transferTo 함수가 추가됨
- 이를 사용하여 kafka는 메시지를 유저 영역으로 가져오지 않고, 커널 영역에서 네트워크로 바로 전송하여 속도에 많은 이점을 가짐
- 기존 방식과 transferTo를 사용한 방식의 성능 측정 시 후자가 65% 더 빠른 결과를 보여줌
See also
- Apache
- Sqoop
- Kafka
- Hive
- Hadoop
- Oozie
- RedPanda - Kafka랑 동일한 인터페이스, 빠르고 데이터 손실없고 wasm으로 다양한 언어 지원.
- Franz - macOS용 Apache Kafka 데스크탑 클라이언트
- WarpStream - Kafka는 죽었다, Kafka 만세!
- broadcaster (python) - Simple broadcast channels
- Upstash - Redis 와 Kafka 서비스를 (제한된 무료) 제공해주는 클라우드 업체
Favorite site
- 최신 메시지 큐(Messgae Queue) MQ 기술 - 자바 에서 쓰이는 최신 메시지 큐(Messgae Queue) MQ 에 대해
- LINE에서 Kafka를 사용하는 방법 – 1편
- 실시간 데이터 피드 처리와 이를 위한 아파치 카프카 (Apache Kafka)
- Apache Kafka Made Simple: A First Glimpse of a Kafka Without ZooKeeper - 더 단순한 Kafka를 위해 아파치 주키퍼를 걷어낸 KIP-500의 얼리 억세스가 2.8 릴리즈에 포함
- (카프카) 무엇이고, 왜 필요할까?
- Kafka 사용이유 ( vs RabbitMQ ) :: Ellune's Spadework
- 소프트웨어 엔지니어가 알아야 할 로그에 대한 모든 것 | Apache Kafka 탄생 배경 | GeekNews