>  기사  >  백엔드 개발  >  Kafka 스키마 레지스트리 - 브로커: 브로커가 레코드의 유효성을 검사할 수 없습니다.

Kafka 스키마 레지스트리 - 브로커: 브로커가 레코드의 유효성을 검사할 수 없습니다.

王林
王林앞으로
2024-02-08 21:06:081099검색

Kafka 架构注册表 - 代理:代理无法验证记录

이 기사에서는 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 예제를 참조하세요(레코드 유효성 검사 자체를 수행해야 함).

https://github.com/confluenceinc/confluence-kafka-go/blob/master/examples/json_ Producer_example/json_ Producer_example.go

브로커 측 검증은 지금과 같이 잘못 직렬화된 데이터나 "독약"을 방지하기 위한 것입니다.

위 내용은 Kafka 스키마 레지스트리 - 브로커: 브로커가 레코드의 유효성을 검사할 수 없습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제