يوفر Confluent Schema Registry طبقة خدمة للبيانات التعريفية الخاصة بك. فهو يوفر واجهة RESTful لتخزين واسترجاع مخططات Avro® وJSON Schema وProtobuf. فهو يقوم بتخزين سجل تم إصداره لجميع المخططات بناءً على استراتيجية اسم موضوع محددة، ويوفر إعدادات توافق متعددة ويسمح بتطور المخططات وفقًا لإعدادات التوافق التي تم تكوينها والدعم الموسع لأنواع المخططات هذه. وهو يوفر برامج تسلسل يتم توصيلها بعملاء Apache Kafka® الذين يتعاملون مع تخزين المخطط واسترجاع رسائل Kafka التي يتم إرسالها بأي من التنسيقات المدعومة.
يتضمن هذا الملف التمهيدي الأقسام التالية:
فيما يلي بعض الروابط لصفحات سجل المخطط في Confluent Documentation.
يفترض ما يلي أن لديك كافكا ومثيلًا لسجل المخطط قيد التشغيل باستخدام الإعدادات الافتراضية. هذه الأمثلة، والمزيد، متاحة أيضًا في أمثلة استخدام واجهة برمجة التطبيقات (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
هي الطريقة الموصى بها لبدء الخدمة وإيقافها.
لبناء نسخة تطوير، قد تحتاج إلى إصدارات تطوير من الاستخدام الشائع والاستخدامات المتبقية. بعد تثبيت هذه العناصر، يمكنك إنشاء سجل المخططات باستخدام Maven.
يستخدم هذا المشروع نمط كود Google Java للحفاظ على نظافة التعليمات البرمجية واتساقها.
لبناء:
mvn compile
لتشغيل اختبارات الوحدة والتكامل:
mvn test
لتشغيل مثيل Schema Registry مقابل مجموعة 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
.
شكرًا لمساعدتنا في تحسين سجل المخططات!
تم ترخيص المشروع بموجب ترخيص Confluent Community، باستثناء client-*
و avro-*
libs، الخاضعين لترخيص Apache 2.0. راجع ملف الترخيص في كل مجلد فرعي للحصول على اتفاقية ترخيص مفصلة.