Реестр Confluent Schema предоставляет уровень обслуживания ваших метаданных. Он предоставляет интерфейс RESTful для хранения и извлечения схем Avro®, JSON Schema и Protobuf. Он хранит историю всех схем с версиями на основе указанной стратегии имен субъектов, предоставляет несколько параметров совместимости и позволяет развивать схемы в соответствии с настроенными параметрами совместимости, а также расширенную поддержку этих типов схем. Он предоставляет сериализаторы, которые подключаются к клиентам Apache Kafka® и обрабатывают хранение и извлечение схемы для сообщений Kafka, отправляемых в любом из поддерживаемых форматов.
Этот README включает в себя следующие разделы:
Вот несколько ссылок на страницы реестра схемы в документации Confluent.
Ниже предполагается, что у вас есть Kafka и экземпляр реестра схемы, работающий с настройками по умолчанию. Эти и другие примеры также доступны в разделе «Примеры использования API» на сайте 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 " }
Вы можете загрузить готовые версии реестра схем как часть Confluent Platform. Для установки из исходников следуйте инструкциям в разделе «Разработка».
Интерфейс 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
Каждый из выпущенных файлов содержит структуру каталогов, аналогичную упакованным двоичным версиям.
Вы также можете создать отдельный толстый JAR-файл реестра схемы, используя standalone
профиль:
mvn package -P standalone [-DskipTests]
При этом создается package-schema-registry/target/kafka-schema-registry-package-$VERSION-standalone.jar
, который также включает все зависимости.
Спецификации OpenAPI (ранее известные как Swagger) создаются автоматически с использованием swagger-maven-plugin
на этапе compile
.
Спасибо, что помогли нам сделать Schema Registry еще лучше!
Проект распространяется по лицензии Confluent Community License, за исключением библиотек client-*
и avro-*
, которые находятся под лицензией Apache 2.0. Подробное лицензионное соглашение см. в файле ЛИЦЕНЗИИ в каждой подпапке.