https://blog.voidmainvoid.net/442
토픽의 데이터를 키-값 저장소로 사용하여 데이터를 조회할 수 있는 방법을 앞서 다루어 보았습니다. 아래는 응용하여 만든 GlobalKTable의 뷰 입니다.
StreamsBuilder builder = new StreamsBuilder();
GlobalKTable<String, String> addressTable = builder.globalTable("address",Materialized.as("address"));
KafkaStreams streams = new KafkaStreams(builder.build(), configs);
streams.start();
view = streams.store(StoreQueryParameters.fromNameAndType(StoreQueryParameters.fromNameAndType(
"address",
QueryableStoreTypes.keyValueStore()));
ReadOnlyKeyValueStore<String, String> address = view.all();
address.forEachRemaining(keyValue -> log.info(keyValue.toString()));
이렇게 GlobalKTable로 설정할 경우 신기하게도 컨슈머 그룹이 생기지 않는데요. 그 이유는 KTable, GlobalKTable로 사용할 경우에는 커밋을 하지 않기 때문입니다.
Confluent 직원인 Matthias J. Sax에 따르면 다음과 같이 이야기 합니다.
Correct, offsets are not committed for "global topics" -- the main reason is, that all KafkaStreams instances read all partitions and committing multiple offsets is not possible.
You can still access the "global consumer" metrics, that also report their local lag.
커밋을 하지 않고 전체 데이터에 대해서 view를 만든다는 특징을 확인할 수 있습니다.
이런 특징은 스트림즈 애플리케이션으로 하여금 내부 state store table의 용량 이슈를 발생시킬 수 있는데요. 스트림즈의 뷰 특성상 tombstone데이터가 아닌 레코드들은 모두 가져와서 저장하여 사용하게 됩니다. 그렇기 때문에 충분히 사용한 데이터는 확인 후에 Record("특정 키", null)을 넣어줘야만 합니다. 이런 툼스톤 레코드를 통해 각 스트림즈 애플리케이션의 로컬에 저장된 데이터의 크기를 적당히 유지시켜 운영할 수 있습니다.
툼스톤 레코드에 대한 자세한 설명은 다음 링크에서 참조할 수 있습니다.
https://rmoff.net/2020/11/03/kafka-connect-ksqldb-and-kafka-tombstone-messages/
One of the neat things that Kafka does with its messages is the concept of tombstone messages. These are messages with a null value. They’re usually used in conjunction with a key to indicate the logical deletion of a record.
반응형
'빅데이터 > Kafka' 카테고리의 다른 글
windows의 WSL환경에서 아파치 카프카 설치, 실행하는 방법 (0) | 2023.02.24 |
---|---|
커넥트 REST API 확장 플러그인 : Connect Rest Extension Plugin (0) | 2022.10.04 |
카프카 커넥터의 태스크에 Priority를 부여할 수 없을까? (0) | 2022.10.04 |
카프카 커넥트/커넥터 내부 살펴보기 - 2.8기준, sinkTask 위주로 (2) | 2022.08.30 |
ConnectException: Exiting WorkerSinkTask due to unrecoverable exception 이슈란? (0) | 2022.08.03 |
WINDOW STORE CHANGE LOG ADDITIONAL RETENTION MS CONFIG 옵션 분석 (0) | 2022.06.15 |