Confluent Schema Registry bietet eine Bereitstellungsschicht für Ihre Metadaten. Es bietet eine RESTful-Schnittstelle zum Speichern und Abrufen Ihrer Avro®-, JSON-Schema- und Protobuf-Schemas. Es speichert einen versionierten Verlauf aller Schemas basierend auf einer angegebenen Subjektnamensstrategie, bietet mehrere Kompatibilitätseinstellungen und ermöglicht die Weiterentwicklung von Schemas entsprechend den konfigurierten Kompatibilitätseinstellungen sowie erweiterte Unterstützung für diese Schematypen. Es stellt Serialisierer bereit, die sich an Apache Kafka®-Clients anschließen lassen und die Schemaspeicherung und den Abruf von Kafka-Nachrichten übernehmen, die in einem der unterstützten Formate gesendet werden.
Diese README-Datei enthält die folgenden Abschnitte:
Hier finden Sie einige Links zu Schema Registry-Seiten in der Confluent-Dokumentation.
Im Folgenden wird davon ausgegangen, dass Kafka und eine Instanz der Schema Registry mit den Standardeinstellungen ausgeführt werden. Diese und weitere Beispiele sind auch unter API-Nutzungsbeispiele auf docs.confluent.io verfügbar.
# 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 " }
Sie können vorgefertigte Versionen der Schema-Registrierung als Teil der Confluent-Plattform herunterladen. Befolgen Sie zur Installation von der Quelle die Anweisungen im Abschnitt „Entwicklung“.
Die REST-Schnittstelle zur Schema-Registrierung umfasst einen integrierten Jetty-Server. Die Wrapper-Skripte bin/schema-registry-start
und bin/schema-registry-stop
sind die empfohlene Methode zum Starten und Stoppen des Dienstes.
Um eine Entwicklungsversion zu erstellen, benötigen Sie möglicherweise eine Entwicklungsversion von Common und Rest-Utils. Nach der Installation können Sie die Schema Registry mit Maven erstellen.
Dieses Projekt verwendet den Google Java-Codestil, um den Code sauber und konsistent zu halten.
Zu bauen:
mvn compile
So führen Sie die Unit- und Integrationstests aus:
mvn test
So führen Sie eine Instanz von Schema Registry für einen lokalen Kafka-Cluster aus (unter Verwendung der in Kafka enthaltenen Standardkonfiguration):
mvn exec:java -pl :kafka-schema-registry -Dexec.args= " config/schema-registry.properties "
So erstellen Sie eine gepackte Version und überspringen optional die Tests:
mvn package [-DskipTests]
Es produziert:
package-schema-registry/target/kafka-schema-registry-package-$VERSION-package
package-kafka-serde-tools/target/kafka-serde-tools-package-$VERSION-package
Jede der erzeugten Dateien enthält ein Verzeichnislayout, das den gepackten Binärversionen ähnelt.
Sie können mit dem standalone
-Profil auch ein eigenständiges Fat-JAR der Schema-Registrierung erstellen:
mvn package -P standalone [-DskipTests]
Dadurch wird package-schema-registry/target/kafka-schema-registry-package-$VERSION-standalone.jar
generiert, das auch alle Abhängigkeiten enthält.
OpenAPI-Spezifikationen (früher bekannt als Swagger) werden in der compile
automatisch mithilfe swagger-maven-plugin
erstellt.
Vielen Dank, dass Sie uns dabei geholfen haben, Schema Registry noch besser zu machen!
Das Projekt ist unter der Confluent Community License lizenziert, mit Ausnahme der client-*
und avro-*
Bibliotheken, die unter der Apache 2.0-Lizenz stehen. Eine detaillierte Lizenzvereinbarung finden Sie in der Datei LICENSE in jedem Unterordner.