Confluent Schema Registry는 메타데이터에 대한 제공 계층을 제공합니다. Avro®, JSON 스키마 및 Protobuf 스키마를 저장하고 검색하기 위한 RESTful 인터페이스를 제공합니다. 지정된 주체 이름 전략을 기반으로 모든 스키마의 버전화된 기록을 저장하고, 여러 호환성 설정을 제공하며, 구성된 호환성 설정에 따라 스키마를 발전시키고 이러한 스키마 유형에 대한 확장된 지원을 허용합니다. 지원되는 형식으로 전송되는 Kafka 메시지에 대한 스키마 저장 및 검색을 처리하는 Apache Kafka® 클라이언트에 연결되는 직렬 변환기를 제공합니다.
이 README에는 다음 섹션이 포함되어 있습니다.
다음은 Confluent Documentation의 스키마 레지스트리 페이지에 대한 몇 가지 링크입니다.
다음에서는 기본 설정을 사용하여 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 Platform의 일부로 사전 구축된 스키마 레지스트리 버전을 다운로드할 수 있습니다. 소스에서 설치하려면 개발 섹션의 지침을 따르세요.
스키마 레지스트리에 대한 REST 인터페이스에는 내장된 Jetty 서버가 포함되어 있습니다. 래퍼 스크립트 bin/schema-registry-start
및 bin/schema-registry-stop
서비스를 시작하고 중지하는 데 권장되는 방법입니다.
개발 버전을 빌드하려면 common 및 Rest-utils의 개발 버전이 필요할 수 있습니다. 이를 설치한 후 Maven을 사용하여 스키마 레지스트리를 구축할 수 있습니다.
이 프로젝트는 Google Java 코드 스타일을 사용하여 코드를 깔끔하고 일관되게 유지합니다.
빌드하려면:
mvn compile
단위 및 통합 테스트를 실행하려면 다음 안내를 따르세요.
mvn test
로컬 Kafka 클러스터에 대해 Schema Registry 인스턴스를 실행하려면(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
프로필을 사용하여 스키마 레지스트리의 독립형 fat 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-*
libs를 제외하고 Confluent Community 라이센스에 따라 라이센스가 부여됩니다. 자세한 라이센스 계약은 각 하위 폴더의 LICENSE 파일을 참조하세요.