yFinance 카프카 스트림스
Kafka Streams
Kafka Connect
Apache Flink와 CDC의 만남
AWS MSK
[kafka Java Doc](https://javadoc.io/static/org.apache.kafka/kafka-streams/3.3.2/org/apache/kafka/streams/kstream/KStream.html#processValues-org.apache.kafka.streams.processor.api.FixedKeyProcessorSupplier-org.apache.kafka.streams.kstream.Named-java.lang.String...-)
인프런 권철민 쌤 카프카 코어 완벽 가이드
Kafka는 디스크 기반인데 왜 이렇게 빠른건지
Sequential IO
- 대용량 데이터를 RAM에 올리기엔 제한적. 따라서 카프카는 디스크를 저장소로 사용하는 대신 데이터를 append only하여 디스크의 연속적 블록에 저장.
Sequential I/O를 통해 탐색시간을 최소화시킴.
- 두개의 인덱스 파일이 메모리에 존재
- Offset Index : Offset ⇒ 물리 위치를 찾는 인덱스
- **Timestamp Index :**Timestamp ⇒ Offset을 찾는 인덱스
Zero Copy
- Read buffer에서 NIC buffer로 데이터를 바로 보내서 복사횟수와 컨텍스트 스위칭 횟수를 줄임.
Data Batch & Compression
- Batching과 Compression을 지원하여 네트워킹 횟수를 대폭 줄여 성능을 향상
Topic Partitioning
- 데이터가 순차적이라 멀티 쓰레드가 동시에 접근하는 게 의미가 없음. 하지만 파티셔닝을 하면 각 파티션에는 독립된 쓰레드가 붙어 작업할 수 있어 하나의 토픽을 여러 쓰레드가 병렬적으로 처리 가능해짐.