Confluent Schema Registry มอบเลเยอร์การให้บริการสำหรับข้อมูลเมตาของคุณ มีอินเทอร์เฟซ RESTful สำหรับจัดเก็บและเรียกข้อมูลสกีมา Avro®, JSON Schema และ Protobuf ของคุณ โดยจะจัดเก็บประวัติเวอร์ชันของสคีมาทั้งหมดตามกลยุทธ์ชื่อเรื่องที่ระบุ มีการตั้งค่าความเข้ากันได้หลายรายการ และช่วยให้สามารถพัฒนาสคีมาตามการตั้งค่าความเข้ากันได้ที่กำหนดค่าไว้ และการสนับสนุนเพิ่มเติมสำหรับประเภทสคีมาเหล่านี้ โดยจัดให้มีซีเรียลไลเซอร์ที่เสียบเข้ากับไคลเอนต์ Apache Kafka® ที่จัดการพื้นที่จัดเก็บสคีมาและการดึงข้อความ Kafka ที่ส่งในรูปแบบที่รองรับ
README นี้ประกอบด้วยส่วนต่างๆ ดังต่อไปนี้:
ต่อไปนี้คือลิงก์บางส่วนไปยังหน้า Schema Registry ในเอกสาร Confluent Documentation
ข้อมูลต่อไปนี้จะถือว่าคุณมี Kafka และอินสแตนซ์ของ Schema Registry ที่ทำงานโดยใช้การตั้งค่าเริ่มต้น ตัวอย่างเหล่านี้และอื่นๆ สามารถดูได้ที่ตัวอย่างการใช้งาน 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 หลังจากติดตั้งสิ่งเหล่านี้แล้ว คุณสามารถสร้าง Schema Registry ด้วย 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
ขอขอบคุณที่ช่วยเราปรับปรุง Schema Registry ให้ดียิ่งขึ้น!
โครงการนี้ได้รับอนุญาตภายใต้ Confluent Community License ยกเว้น client-*
และ avro-*
libs ซึ่งอยู่ภายใต้ลิขสิทธิ์ Apache 2.0 ดูไฟล์ LICENSE ในแต่ละโฟลเดอร์ย่อยสำหรับข้อตกลงใบอนุญาตโดยละเอียด