Confluent Schema Registry は、メタデータのサービス層を提供します。 Avro®、JSON スキーマ、および Protobuf スキーマを保存および取得するための RESTful インターフェイスを提供します。指定されたサブジェクト名戦略に基づいてすべてのスキーマのバージョン履歴を保存し、複数の互換性設定を提供し、構成された互換性設定に従ってスキーマを進化させたり、これらのスキーマ タイプのサポートを拡張したりできます。これは、サポートされている形式で送信される Kafka メッセージのスキーマの保存と取得を処理する Apache Kafka® クライアントにプラグインするシリアライザーを提供します。
この README には次のセクションが含まれています。
Confluent ドキュメントのスキーマ レジストリ ページへのリンクをいくつか示します。
以下では、Kafka とスキーマ レジストリのインスタンスがデフォルト設定を使用して実行されていることを前提としています。これらの例やその他の例は、docs.confluent.io の API 使用例からも入手できます。
# Register a new version of a schema under the subject "Kafka-key"
$ curl -X POST -H " Content-Type: application/vnd.schemaregistry.v1+json "
--data ' {"schema": "{"type": "string"}"} '
http://localhost:8081/subjects/Kafka-key/versions
{ " id " :1}
# Register a new version of a schema under the subject "Kafka-value"
$ curl -X POST -H " Content-Type: application/vnd.schemaregistry.v1+json "
--data ' {"schema": "{"type": "string"}"} '
http://localhost:8081/subjects/Kafka-value/versions
{ " id " :1}
# List all subjects
$ curl -X GET http://localhost:8081/subjects
[ " Kafka-value " , " Kafka-key " ]
# List all schema versions registered under the subject "Kafka-value"
$ curl -X GET http://localhost:8081/subjects/Kafka-value/versions
[1]
# Fetch a schema by globally unique id 1
$ curl -X GET http://localhost:8081/schemas/ids/1
{ " schema " : " " string " " }
# Fetch version 1 of the schema registered under subject "Kafka-value"
$ curl -X GET http://localhost:8081/subjects/Kafka-value/versions/1
{ " subject " : " Kafka-value " , " version " :1, " id " :1, " schema " : " " string " " }
# Fetch the most recently registered schema under subject "Kafka-value"
$ curl -X GET http://localhost:8081/subjects/Kafka-value/versions/latest
{ " subject " : " Kafka-value " , " version " :1, " id " :1, " schema " : " " string " " }
# Delete version 3 of the schema registered under subject "Kafka-value"
$ curl -X DELETE http://localhost:8081/subjects/Kafka-value/versions/3
3
# Delete all versions of the schema registered under subject "Kafka-value"
$ curl -X DELETE http://localhost:8081/subjects/Kafka-value
[1, 2, 3, 4, 5]
# Check whether a schema has been registered under subject "Kafka-key"
$ curl -X POST -H " Content-Type: application/vnd.schemaregistry.v1+json "
--data ' {"schema": "{"type": "string"}"} '
http://localhost:8081/subjects/Kafka-key
{ " subject " : " Kafka-key " , " version " :1, " id " :1, " schema " : " " string " " }
# Test compatibility of a schema with the latest schema under subject "Kafka-value"
$ curl -X POST -H " Content-Type: application/vnd.schemaregistry.v1+json "
--data ' {"schema": "{"type": "string"}"} '
http://localhost:8081/compatibility/subjects/Kafka-value/versions/latest
{ " is_compatible " :true}
# Get top level config
$ curl -X GET http://localhost:8081/config
{ " compatibilityLevel " : " BACKWARD " }
# Update compatibility requirements globally
$ curl -X PUT -H " Content-Type: application/vnd.schemaregistry.v1+json "
--data ' {"compatibility": "NONE"} '
http://localhost:8081/config
{ " compatibility " : " NONE " }
# Update compatibility requirements under the subject "Kafka-value"
$ curl -X PUT -H " Content-Type: application/vnd.schemaregistry.v1+json "
--data ' {"compatibility": "BACKWARD"} '
http://localhost:8081/config/Kafka-value
{ " compatibility " : " BACKWARD " }
Confluent プラットフォームの一部として、スキーマ レジストリの事前構築済みバージョンをダウンロードできます。ソースからインストールするには、「開発」セクションの指示に従ってください。
スキーマ レジストリへの REST インターフェイスには、組み込みの Jetty サーバーが含まれています。ラッパー スクリプトbin/schema-registry-start
およびbin/schema-registry-stop
サービスを開始および停止するための推奨される方法です。
開発バージョンをビルドするには、common およびrest-utils の開発バージョンが必要になる場合があります。これらをインストールした後、Maven を使用してスキーマ レジストリを構築できます。
このプロジェクトでは、Google Java コード スタイルを使用して、コードをクリーンで一貫性のある状態に保ちます。
構築するには:
mvn compile
単体テストと統合テストを実行するには:
mvn test
ローカル Kafka クラスターに対してスキーマ レジストリのインスタンスを実行するには (Kafka に含まれるデフォルト構成を使用):
mvn exec:java -pl :kafka-schema-registry -Dexec.args= " config/schema-registry.properties "
パッケージ版を作成するには、必要に応じてテストをスキップします。
mvn package [-DskipTests]
それは以下を生成します:
package-schema-registry/target/kafka-schema-registry-package-$VERSION-package
のスキーマ レジストリpackage-kafka-serde-tools/target/kafka-serde-tools-package-$VERSION-package
内の avro/json/protobuf 用の Serde ツール生成された各ファイルには、パッケージ化されたバイナリ バージョンと同様のディレクトリ レイアウトが含まれています。
standalone
プロファイルを使用して、スキーマ レジストリのスタンドアロン ファット JAR を生成することもできます。
mvn package -P standalone [-DskipTests]
これにより、すべての依存関係も含まれるpackage-schema-registry/target/kafka-schema-registry-package-$VERSION-standalone.jar
が生成されます。
OpenAPI (旧名 Swagger) 仕様は、 compile
段階でswagger-maven-plugin
使用して自動的に構築されます。
スキーマ レジストリの改善にご協力いただきありがとうございます。
このプロジェクトは、Apache 2.0 ライセンスに基づくclient-*
およびavro-*
ライブラリを除き、Confluent Community License に基づいてライセンスされています。使用許諾契約の詳細については、各サブフォルダー内の LICENSE ファイルを参照してください。