Kafka의 키 / 값 쌍 기반 메시징의 목적은 무엇입니까?
의 모든 예제 의 카프카 | 생산자 는 ProducerRecord
의 키 / 값 쌍이 동일한 유형 (모든 예가 표시됨 <String,String>
) 일뿐만 아니라 동일한 값인 것으로 표시 합니다 . 예를 들면 :
producer.send(new ProducerRecord<String, String>("someTopic", Integer.toString(i), Integer.toString(i)));
그러나 Kafka 문서에서는 키 / 값 개념 (및 기본 목적 / 유틸리티)이 설명 된 위치를 찾을 수없는 것 같습니다. 전통적인 메시징 (ActiveMQ, RabbitMQ 등)에서 저는 항상 특정 주제 / 대기열 / 교환에서 메시지를 실행했습니다. 그러나 Kafka는 일반적인 'ole string 메시지 대신 키 / 값 쌍이 필요한 것으로 보이는 최초의 브로커입니다.
그래서 저는 묻습니다 : 생산자들에게 KV 쌍을 보내도록 요구하는 목적 / 유용성은 무엇입니까?
Kafka는 파티션으로 구성된 분산 로그 의 추상화를 사용합니다 . 로그를 파티션으로 분할하면 시스템을 확장 할 수 있습니다.
키 는 메시지가 추가되는 로그 내의 파티션을 결정하는 데 사용됩니다. 값은 메시지의 실제 페이로드입니다. 예제는 실제로 이와 관련하여 매우 "좋은"것이 아닙니다. 일반적으로 복잡한 유형을 값으로 사용하고 (튜플 유형 또는 JSON 또는 유사) 하나의 필드를 키로 추출합니다.
참조 : http://kafka.apache.org/intro#intro_topics 및 http://kafka.apache.org/intro#intro_producers
일반적으로 키 및 / 또는 값도 일 수 있습니다 null
. 키가 null
임의 파티션이면 선택됩니다. 값이있는 경우 null
가 있습니다 경우 특별한 "삭제"의미를 가지고 당신은 주제 (대한 로그 압축 대신 로그 보존 정책 있도록 http://kafka.apache.org/documentation#compaction을 ).
'Program Tip' 카테고리의 다른 글
isset ()과 __isset ()의 차이점은 무엇입니까? (0) | 2021.01.08 |
---|---|
Chrome의 네트워크 탭에서 모든 Ajax 응답을 검색하는 방법은 무엇입니까? (0) | 2021.01.08 |
Django : Jinja2로 전환 하시겠습니까? (0) | 2021.01.08 |
x + = y는 컴파일 오류를 제공하고 x = x + y는 제공하지 않도록 x와 y를 어떻게 선언합니까? (0) | 2021.01.08 |
API 등급 제한 방법 (0) | 2021.01.08 |