Schema Registry zentralisiert und versioniert Schemata von Messaging-Systemen. Kompatibilitaetspruefungen gewaehrleisten eine sichere Evolution ohne Breaking Changes.
Schema Registry in Kafka¶
Zentralisiert und versioniert Schemata, erzwingt Kompatibilitaet.
Avro-Schema¶
{
"type": "record",
"name": "Order",
"namespace": "cz.core.events",
"fields": [
{"name": "order_id", "type": "string"},
{"name": "total_czk", "type": {"type": "bytes", "logicalType": "decimal", "precision": 12, "scale": 2}},
{"name": "status", "type": {"type": "enum", "name": "Status", "symbols": ["PENDING", "CONFIRMED", "SHIPPED"]}},
{"name": "notes", "type": ["null", "string"], "default": null}
]
}
Kompatibilitaetsmodi¶
- BACKWARD – neuer Consumer, alter Produzent
- FORWARD – alter Consumer, neuer Produzent
- FULL – beides (am sichersten)
from confluent_kafka.schema_registry import SchemaRegistryClient
from confluent_kafka.schema_registry.avro import AvroSerializer
registry = SchemaRegistryClient({'url': 'http://registry:8081'})
serializer = AvroSerializer(registry, schema_str)
producer.produce('orders', value=serializer(order, ctx))
Zusammenfassung¶
Schema Registry ist unverzichtbar fuer produktives Kafka. Versionierung und Kompatibilitaetspruefungen verhindern Laufzeitfehler.
schema registryavrokafkaserialization