4

Apache Kafka 0.9 및 0.10의 새로운 기능을 조사하는 동안 우리는 KStreams 및 KTables를 사용했습니다. Kafka가 RocksDB를 내부적으로 사용한다는 흥미로운 사실은 입니다. Introducing Kafka Streams: Stream Processing Made Simple을 참조하십시오. RocksDB는 JVN 호환 언어로 작성되지 않았으므로 별도의 공유 라이브러리 (OS에 따라 다름)가 필요하므로 배포를주의해서 처리해야합니다.Apache Kafka Streams가 RocksDB를 사용하는 이유와 어떻게 그것을 변경할 수 있습니까?

  • 왜 아파치 카프카 스트림이 RocksDB를 사용

    그리고 여기에 간단한 질문이 있습니다?

  • 어떻게 변경할 수 있습니까?

나는 대답을 찾으려고했으나 암시적인 이유 만 보았습니다. RocksDB는 초당 수백만 건의 작업 범위에서 매우 빠릅니다.

다른 한편으로는 Java로 코딩 된 DB를 볼 수 있으며 JNI를 넘기지 않고 끝낼 수 있습니다.

+3

FYI : "RocksDB는 JVN 호환 언어로 작성되지 않았으므로 별도의 공유 라이브러리 (OS에 따라 다름)가 필요하므로 배포를 신중하게 처리해야합니다." Kafka Streams 사용자는 아무 것도 설치할 필요가 없습니다. –

+0

@miguno : 버그가 없다면 당신이 맞습니다 :-). 그러나 버그가 발생하거나 디버그 세션이 필요할 때 비원시 코드는 작업을 복잡하게 만듭니다. 두 번째 문제는 Kafka 스트림이 실행될 플랫폼을 RocksDB 공유 라이브러리에 의해 제한되므로 설명서에 설명서에 표시되지 않는다는 것입니다. 그것은 투명성의 문제입니다. –

답변

8

RocksDB는 몇 가지 (내부적 인) 이유로 사용됩니다 (이미 성능 예를 들어 언급했듯이). 개념적으로 Kafka Streams는 RocksDB가 필요하지 않습니다. 내부 키 값 캐시로 사용되며 유사한 기능을 제공하는 다른 저장소에서도 사용할 수 있습니다. 아래에서 @miguno

코멘트 (고쳐) 순수 메모리 키 값을 저장 달리 RocksDB의

한 가지 중요한 이점은 디스크에 기록 할 수있는 능력이다. 따라서 사용 가능한 주 메모리보다 큰 상태가 Kafka Streams에서 지원 될 수 있습니다. 당신은 아무것도 설치할 필요가 없습니다 카프카 스트림의 사용자로서 "RocksDB is not written in JVN compatible language, so it needs careful handling of the deployment, as it needs extra shared library (OS dependent)." : 참고로

: 위의 @miguno에서

코멘트. DSL카프카 스트림을 사용

, 그것은이다 현재 (v0.10.0.1) 비록 다른 키 - 값 저장소를 사용할 수 없습니다. https://issues.apache.org/jira/browse/KAFKA-3825

카프카 스트림 프로세서 API를 사용하여, 당신은 StateStore 인터페이스를 통해 자신의 가게를 구현하고 토폴로지의 프로세서 노드에 연결할 수 있습니다 그러나, 향후 릴리스는 다른 뭔가를 연결 할 수 있습니다. 이것이 더 많은 작업 일지라도 현재의 DSL 제한을 해결할 수 있습니다.

+1

RocksDB를 선택하는 몇 가지 이유 중 하나는 사용자가 처리 시스템의 사용 가능한 메모리보다 큰 상태를 관리 할 수 ​​있도록 허용하는 것입니다. –

관련 문제