KAFKA-Schema-Registry

KAFKA Schema Registry
对于Kafka Producer 和Kafka Consumer , Kafka的schema Registry 都存储AVRO Schemas。

  1. 提供了一个用于管理Avro架构的RestFul界面
  2. 查KAFKA的架构兼容性
  3. 使用Avro Schema, 我们可以配置兼容性设置以支持kafka模式的发展
  4. 下图的schema是不需要发送的,只需要唯一的schema ID。

KAFKA-Schema-Registry_第1张图片
5. 为什么需要schema Registry?
ksqldb 用于处理AVRO 格式的数据。 确切地说是处理所有的非JSON格式数据。 若没有schemaRegistry, ksqldb只能使用json 和delimited 的格式
6, 如何给某个主题produce AVRO格式的数据
7.1 首先需要自定义一个AVRO格式,其实就类似于数据库里面创建一个表结构,只是该表结构是json格式的
{“namespace”: ***"hltestt"*,
“type”: “record”,
“name”: "bbb",
“fields”: [
{“name”: “id”, “type”: “string”},
{“name”: “tname”, “type”: “string”},
{“name”: “address”, “type”: “string”}
]
}
注意,,namespace是自己定义的, name就类似于表名。
fields里面的内容就类似于表结构
上面这个就是需要被送往schema registry url 注册的schema。 随后对应的数据就可以按照这个schema进行生产和消费。
一个topic里面是可以包含多种不同的数据格式的数据。但是当你从control 中心察看时,就只能使用json 格式察看。这个时候所有的非json格式的数据,看上去就有点像是乱码。这个时候就需要靠代码进行察看

  1. 如何注册schema
    第一步:首先schema按照上面的 方式创建好,只是此时应该是 外面再包一层schema关键字。
    {“schema” : {“namespace”: ***"hltestt"*,
    “type”: “record”,
    “name”: "bbb",
    “fields”: [
    {“name”: “id”, “type”: “string”},
    {“name”: “tname”, “type”: “string”},
    {“name”: “address”, “type”: “string”}
    ]
    }
    }

第二步: 运用下面的命令进行注册
curl -X POST -H “Content-Type: application/vnd.schemaregistry.v1+json”
–data ’ schema 内容{就是上面定义的json文件内容}’
schema_registry URL/subjects/topicName-value/versions

这样就表示给某个topicName的value注册了schema,若注册成功了会返回一个schemaID, 这个schemaID 就类似于数据库表中的主键。也是数据找到对应的schema的外键

你可能感兴趣的:(KAFKA-Schema-Registry)