首页/数据/数据工程与 ETL 速查/Schema Registry 与消息序列化治理
Kafka64 条

Schema Registry 与消息序列化治理

Schema Registry 集中管理消息结构的版本与兼容性策略:生产者注册 schema 获得 ID,消息只携带 ID,消费者按 ID 取 schema 反序列化,结构变更受兼容性检查约束。

管理对象subject(通常为 <topic>-value / <topic>-key)
兼容性BACKWARD(默认)/ FORWARD / FULL / NONE
格式Avro、Protobuf、JSON Schema

注册 schema(REST)

注册 schema(REST)
curl -X POST -H "Content-Type: application/vnd.schemaregistry.v1+json" \
  --data '{"schema": "{\"type\": \"string\"}"}' \
  http://localhost:8081/subjects/orders-value/versions
兼容性检查默认在注册时进行;BACKWARD 表示新 schema 能读旧数据,是较常用的默认策略。

易错点

  • 删除 schema 版本有软删与硬删之分,硬删后历史消息无法反序列化
  • 把兼容性设为 NONE 后再改结构,消费端会直接反序列化失败

数据来源与参考

  • Confluent 官方文档:Schema Registry 与 Compatibility Types
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌