7장. Java 클라이언트의 serializers/deserializers를 사용하여 Kafka 메시지 검증


Service Registry는 Java로 작성된 Kafka 생산자 및 소비자 애플리케이션을 위한 클라이언트 직렬화기/deserializers(SerDes)를 제공합니다. Kafka 생산자 애플리케이션은 serializers를 사용하여 특정 이벤트 스키마를 준수하는 메시지를 인코딩합니다. Kafka 소비자 애플리케이션은 deserializers를 사용하여 특정 스키마 ID를 기반으로 올바른 스키마를 사용하여 메시지를 직렬화했는지 확인합니다. 이렇게 하면 스키마가 일관되게 사용되며 런타임에 데이터 오류를 방지할 수 있습니다.

이 장에서는 생산자 및 소비자 클라이언트 애플리케이션에서 Kafka 클라이언트 SerDes를 사용하는 방법을 설명합니다.

사전 요구 사항

7.1. Kafka 클라이언트 애플리케이션 및 서비스 레지스트리

서비스 레지스트리는 클라이언트 애플리케이션 구성에서 스키마 관리를 분리합니다. 클라이언트 코드에서 URL을 지정하여 Java 클라이언트 애플리케이션에서 서비스 레지스트리의 스키마를 사용하도록 설정할 수 있습니다.

서비스 레지스트리에 스키마를 저장하여 클라이언트 애플리케이션에서 참조되는 메시지를 직렬화 및 역직렬화하여 전송 및 수신하는 메시지가 해당 스키마와 호환되는지 확인할 수 있습니다. Kafka 클라이언트 애플리케이션은 런타임 시 서비스 레지스트리에서 스키마를 내보내거나 가져올 수 있습니다.

예를 들어 스키마가 진화하여 서비스 레지스트리에서 규칙을 정의하여 스키마 변경이 유효하고 애플리케이션에서 사용하는 이전 버전이 중단되지 않도록 할 수 있습니다. 서비스 레지스트리는 수정된 스키마를 이전 스키마 버전과 비교하여 호환성을 확인합니다.

서비스 레지스트리 스키마 기술

Service Registry에서는 다음과 같은 스키마 기술에 대한 스키마 레지스트리 지원을 제공합니다.

  • Avro
  • protobuf
  • JSON Schema

이러한 스키마 기술은 Service Registry에서 제공하는 Kafka 클라이언트 serializer/deserializer(SerDes) 서비스를 통해 클라이언트 애플리케이션에서 사용할 수 있습니다. 서비스 레지스트리에서 제공하는 SerDes 클래스의 완성 및 사용은 다를 수 있습니다. 다음 섹션에서는 각 스키마 유형에 대한 세부 정보를 제공합니다.

생산자 스키마 구성

생산자 클라이언트 애플리케이션은 직렬화기를 사용하여 특정 브로커 항목에 보낸 메시지를 올바른 데이터 형식으로 배치합니다.

생산자가 직렬화에 서비스 레지스트리를 사용할 수 있도록 하려면 다음을 수행합니다.

스키마를 등록한 후 Kafka 및 Service Registry를 시작할 때 스키마에 액세스하여 프로듀서에서 Kafka 브로커 주제로 전송된 메시지의 포맷을 지정할 수 있습니다. 또는 구성에 따라 생산자는 처음 사용할 때 스키마를 자동으로 등록할 수 있습니다.

스키마가 이미 존재하는 경우 서비스 레지스트리에 정의된 호환성 규칙을 기반으로 레지스트리 REST API를 사용하여 새 버전을 생성할 수 있습니다. 버전은 스키마가 진화할 때 호환성 검사에 사용됩니다. 그룹 ID, 아티팩트 ID 및 버전은 스키마를 식별하는 고유한 10.0.0.1을 나타냅니다.

소비자 스키마 구성

소비자 클라이언트 애플리케이션은 deserializer를 사용하여 특정 브로커 주제에서 올바른 데이터 형식으로 사용하는 메시지를 가져옵니다.

소비자가 deserialization에 서비스 레지스트리를 사용할 수 있도록 하려면 다음을 수행합니다.

글로벌 ID를 사용하여 스키마 검색

기본적으로 스키마는 사용 중인 메시지에 지정된 전역 ID를 사용하여 deserializer에 의해 서비스 레지스트리에서 검색됩니다. 스키마 글로벌 ID는 생산자 애플리케이션의 구성에 따라 메시지 헤더 또는 메시지 페이로드에 있을 수 있습니다.

메시지 페이로드에서 글로벌 ID를 찾을 때 데이터의 형식은 매직 바이트로 시작되어 소비자에게 신호로 사용되는, 글로벌 ID 및 메시지 데이터를 정상적으로 사용합니다. 예를 들면 다음과 같습니다.

# ...
[MAGIC_BYTE]
[GLOBAL_ID]
[MESSAGE DATA]
Copy to Clipboard Toggle word wrap

그런 다음 Kafka 및 Service Registry를 시작하면 스키마에 액세스하여 Kafka 브로커 주제에서 수신한 메시지를 포맷할 수 있습니다.

콘텐츠 ID를 사용하여 스키마 검색

또는 아티팩트 콘텐츠의 고유 ID인 콘텐츠 ID를 기반으로 서비스 레지스트리에서 스키마를 검색하도록 구성할 수 있습니다. 글로벌 ID는 아티팩트 버전의 고유 ID입니다.

콘텐츠 ID는 버전을 고유하게 식별하는 것이 아니라 버전 콘텐츠만 고유하게 식별합니다. 여러 버전이 정확히 동일한 콘텐츠를 공유하는 경우 해당 버전에는 다른 글로벌 ID가 있지만 동일한 콘텐츠 ID가 있습니다. Confluent Schema Registry는 기본적으로 콘텐츠 ID를 사용합니다.

맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat