如何在kafka中实施架构验证

时间:2019-09-05 00:11:52

标签: apache-kafka confluent confluent-schema-registry

我正在使用Kafka和架构注册表。在生产者端使用融合的KafkaAvroSerializer定义了一个模式。一切正常。

另一方面,如果生产者在不遵循模式的情况下发布事件,则发布该事件不会有任何问题。

了解到Kafka只是序列化了二进制文件,没有检查数据,并且功能按设计工作。

想知道是否有更好的方法来执行更强的模式验证,以使主题不会被不良数据污染?

2 个答案:

答案 0 :(得分:1)

在创建主题时使用以下“ --config”标签。这些分别对值和键实施消息模式验证。这两个规则彼此独立。您可以启用一个或全部启用。不符合要求的消息将导致客户端从kafka代理接收错误。

https://www.confluent.io/blog/data-governance-with-schema-validation/

confluent.value.schema.validation=true 
confluent.key.schema.validation=true

答案 1 :(得分:0)

如果使用的是Schema Registry and KafkaAvroSerializer,它会按预期工作。架构注册表的重要方面是支持架构演进,架构可以随着时间而变化。每个事件都将具有Wire格式的嵌入式模式ID,这将允许在用户端反序列化事件。

但是,如果您想在写入Kafka主题之前进行严格的架构验证,则有两种选择-

  1. 您可以在应用程序中定义架构,并使用SpecificRecord类型
  2. 使用API​​从Schema注册表主题中获取架构,并在写入主题之前对其进行验证。