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


서비스 레지스트리는 Java로 작성된 Kafka 생산자 및 소비자 애플리케이션에 대한 클라이언트 직렬화기/직렬화 도구(SerDes)를 제공합니다. Kafka 생산자 애플리케이션은 직렬화기를 사용하여 특정 이벤트 스키마를 준수하는 메시지를 인코딩합니다. Kafka 소비자 애플리케이션은 특정 스키마 ID에 따라 올바른 스키마를 사용하여 메시지가 직렬화되었는지 확인하는 데 deserialize자를 사용합니다. 이를 통해 일관된 스키마를 사용하고 런타임 시 데이터 오류를 방지하는 데 도움이 됩니다.

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

사전 요구 사항

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

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

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

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

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

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

  • Avro
  • protobuf
  • JSON 스키마

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

생산자 스키마 구성

생산자 클라이언트 애플리케이션은 serializer를 사용하여 특정 브로커 주제로 보내는 메시지를 올바른 데이터 형식으로 넣습니다.

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

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

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

소비자 스키마 구성

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

소비자가 deserialization을 위해 서비스 레지스트리를 사용하도록 설정하려면 다음을 수행합니다.

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

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

메시지 페이로드에서 글로벌 ID를 찾을 때 데이터 형식은 소비자에 대한 신호로 사용되는 매직 바이트로 시작하고 그 뒤에 글로벌 ID 및 메시지 데이터가 정상으로 시작됩니다. 예를 들면 다음과 같습니다.

# ...
[MAGIC_BYTE]
[GLOBAL_ID]
[MESSAGE DATA]

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

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

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

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

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.