ホームページ  >  記事  >  バックエンド開発  >  Kafka スキーマ レジストリ - ブローカー: ブローカーはレコードを検証できません

Kafka スキーマ レジストリ - ブローカー: ブローカーはレコードを検証できません

王林
王林転載
2024-02-08 21:06:081103ブラウズ

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

この記事では、php エディターの Xiaoxin が、Kafka アーキテクチャ レジストリの重要な概念であるプロキシを紹介します。 Kafka では、ブローカーはメッセージ フローの管理と処理を担当するコア コンポーネントです。ただし、ブローカーはレコードを検証できません。つまり、レコードがブローカーに書き込まれると、そのレコードを検証したり変更したりすることはできません。この機能は、特定の使用シナリオとセキュリティに影響を与える可能性があるため、Kafka を使用する場合はこの点に注意する必要があります。次に、エージェントが記録を確認できない理由と、発生する可能性のある問題について詳しく説明します。

質問内容

Kafka スキーマ レジストリを使用してスキーマを検証しています。問題は、正しいスキーマを入力したにもかかわらず、依然としてエラー Broker: Broker failed to verify records.

が表示されることです。

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 のみが重要です。

ドキュメントより

より具体的には、レジストリに追加するスキーマは、トピックに存在する可能性のある多くの「バージョン」の 1 つにすぎません (例: 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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。