이 기사에서는 PHP 편집자 Xiaoxin이 Kafka 아키텍처 레지스트리의 중요한 개념인 프록시를 소개합니다. Kafka에서 브로커는 메시지 흐름을 관리하고 처리하는 핵심 구성 요소입니다. 그러나 프록시는 레코드의 유효성을 검사할 수 없습니다. 즉, 레코드가 프록시에 기록되면 유효성을 검사하거나 변경할 수 없습니다. 이 기능은 일부 특정 사용 시나리오 및 보안에 영향을 미칠 수 있으므로 Kafka를 사용할 때 이 점에 주의해야 합니다. 다음으로 상담원이 기록을 확인할 수 없는 이유와 발생할 수 있는 문제에 대해 자세히 설명드리겠습니다.
Kafka 스키마 레지스트리를 사용하여 스키마의 유효성을 검사하고 있습니다. 문제는 올바른 스키마를 입력했는데도 여전히 오류가 발생한다는 것입니다 Broker: Broker failed to verify record.
confluence.value.schema.validation을 true로 설정하면 해당 값의 스키마를 현재 에이전트 레벨에서 확인할 수 있습니다.
제가 설정한 스키마와 전송한 데이터는 다음과 같습니다.
으아악 으아악또한 go를 사용하여 데이터를 보내는데, 데이터에 대한 코드는 다음과 같습니다.
으아악{ "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "description": "Sample schema to help you get started.", "properties": { "test": { "type": "string" } }, "title": "schema_test", "type": "object" }
브로커가 실제로 데이터를 검증하는 방법에 대해 오해가 있는 것 같습니다. 예상대로 작동합니다. 스키마 ID가 필요합니다. ID 없이 주제에 대한 일반 JSON을 보내는 것뿐입니다. 레지스트리의 스키마는 중요하지 않으며 해당 ID만 중요합니다.
문서에서
더 구체적으로 말하면, 레지스트리에 추가하는 패턴은 테마에 존재할 수 있는 많은 "버전" 중 하나일 뿐입니다(예: topic-value
). 각 버전에는 고유한 ID가 있습니다. 인증은 최신 버전을 사용하는 것이 아니라 클라이언트 측에서 ID가 인코딩됩니다.
JSON 스키마 생성을 사용하는 Confluence 예제를 참조하세요(레코드 유효성 검사 자체를 수행해야 함).
브로커 측 검증은 지금과 같이 잘못 직렬화된 데이터나 "독약"을 방지하기 위한 것입니다.
위 내용은 Kafka 스키마 레지스트리 - 브로커: 브로커가 레코드의 유효성을 검사할 수 없습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!