Confluent Schema Registry proporciona una capa de servicio para sus metadatos. Proporciona una interfaz RESTful para almacenar y recuperar sus esquemas Avro®, JSON Schema y Protobuf. Almacena un historial versionado de todos los esquemas basado en una estrategia de nombre de sujeto específica, proporciona múltiples configuraciones de compatibilidad y permite la evolución de los esquemas de acuerdo con las configuraciones de compatibilidad configuradas y soporte ampliado para estos tipos de esquemas. Proporciona serializadores que se conectan a clientes Apache Kafka® que manejan el almacenamiento y la recuperación de esquemas para mensajes Kafka que se envían en cualquiera de los formatos admitidos.
Este README incluye las siguientes secciones:
Aquí hay algunos enlaces a páginas de Registro de esquemas en la documentación de Confluent.
Lo siguiente supone que tiene Kafka y una instancia del Registro de esquema ejecutándose con la configuración predeterminada. Estos ejemplos, y más, también están disponibles en Ejemplos de uso de API en docs.confluent.io.
# 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 " }
Puede descargar versiones prediseñadas del registro de esquemas como parte de la plataforma Confluent. Para instalar desde el código fuente, siga las instrucciones en la sección Desarrollo.
La interfaz REST para el registro de esquemas incluye un servidor Jetty integrado. Los scripts contenedores bin/schema-registry-start
y bin/schema-registry-stop
son el método recomendado para iniciar y detener el servicio.
Para crear una versión de desarrollo, es posible que necesite versiones de desarrollo de common y rest-utils. Después de instalarlos, puede crear el Registro de esquemas con Maven.
Este proyecto utiliza el estilo de código Java de Google para mantener el código limpio y coherente.
Para construir:
mvn compile
Para ejecutar las pruebas unitarias y de integración:
mvn test
Para ejecutar una instancia de Schema Registry en un clúster Kafka local (usando la configuración predeterminada incluida con Kafka):
mvn exec:java -pl :kafka-schema-registry -Dexec.args= " config/schema-registry.properties "
Para crear una versión empaquetada, omitiendo opcionalmente las pruebas:
mvn package [-DskipTests]
Produce:
package-schema-registry/target/kafka-schema-registry-package-$VERSION-package
package-kafka-serde-tools/target/kafka-serde-tools-package-$VERSION-package
Cada uno de los producidos contiene un diseño de directorio similar a las versiones binarias empaquetadas.
También puede generar un JAR independiente de registro de esquema utilizando el perfil standalone
:
mvn package -P standalone [-DskipTests]
Esto genera package-schema-registry/target/kafka-schema-registry-package-$VERSION-standalone.jar
, que también incluye todas las dependencias.
Las especificaciones de OpenAPI (anteriormente conocida como Swagger) se crean automáticamente utilizando swagger-maven-plugin
en la fase compile
.
¡Gracias por ayudarnos a mejorar aún más Schema Registry!
El proyecto tiene la licencia Confluent Community, excepto las bibliotecas client-*
y avro-*
, que están bajo la licencia Apache 2.0. Consulte el archivo LICENCIA en cada subcarpeta para obtener un acuerdo de licencia detallado.