Schema Registry centralizuje a verzuje schémata messaging systémů. Kompatibilitní kontroly zajišťují bezpečnou evoluci bez breaking changes.
Schema Registry v Kafka¶
Centralizuje a verzuje schémata, vynucuje kompatibilitu.
Avro schéma¶
{
"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}
]
}
Kompatibilitní režimy¶
- BACKWARD — nový consumer, starý producent
- FORWARD — starý consumer, nový producent
- FULL — obě (nejbezpečnější)
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))
Shrnutí¶
Schema Registry je nezbytná pro produkční Kafka. Verzování a kompatibilitní kontroly brání runtime chybám.
schema registryavrokafkaserialization