gpt4 book ai didi

apache-kafka - 如何跨团队共享 avro 模式定义

转载 作者:行者123 更新时间:2023-12-04 16:42:16 25 4
gpt4 key购买 nike

Kafka schema-registry 提供了一种使用通用数据契约对来自 Kafka 的数据进行序列化和反序列化的好方法。然而,数据契约(.avsc 文件)是生产者和消费者之间的粘合剂。

一旦制作人制作了 .avsc 文件,就可以将其 checkin 制作人一侧的版本控制。根据语言,它也会自动生成类。

然而,

  • 消费者下拉模式定义以供引用的最佳机制是什么?有没有像 swaggerhub 或 avro 的典型 api 文档门户之类的东西?
  • 如果我们使用 Confluent 平台,控制中心提供了一个 gui 来查看与主题关联的模式,但它也允许用户进行编辑。生产者和消费者团队之间将如何工作?什么会阻止消费者或任何人直接在 Confluent 平台上编辑模式?
  • 这是我们需要使用rest-proxy自定义构建的东西吗?
  • 最佳答案

    您正在谈论使用 Avro 模式的两种不同方式:

  • 让架构注册表为您存储架构。
  • 生成 .avsc文件并将其提供给下游消费者。

  • 在第一种方法中,您的生产者将有一个 .avsc用于序列化消息并将它们发送到 Kafka 的文件,但是如果您使用模式注册表,则无需担心消费者需要实际的 Avro 定义,因为整个 Avro 模式都可以从模式注册表中使用架构标识。您没有实际生成的类,没错,但您仍然可以“遍历”整个消息,并从中提取数据。

    在第二种方法中,不使用模式注册表,生产者使用 .avsc文件将发送到 Kafka 的数据序列化为字节数组,然后该文件可用于消费者/下游应用程序,通常通过源代码控制。当然,这意味着无论何时进行架构更改,您的生产者和消费者都必须保持同步,否则您的消费者将无法读取生产者添加或修改的字段。

    因此,如果您使用架构注册表,Kafka 消费者(如果配置正确)将自动拉取每条消息所需的架构,然后您可以提取所需的数据。另外,您还可以使用以下内容获取任何主题的最新架构:
      curl -X GET "http://schema-registry.company.com:8081/subjects/your_topic-value/versions/latest/schema"

    但是,如果您没有使用架构注册表,则获取完整架构的唯一方法是访问 .avsc。用于序列化消息的文件,通常通过源代码管理,如上所述。然后,您还可以共享自动生成的类(如果可用),将您的消息直接反序列化为类。

    有关如何与 Schema Registry 交互的更多信息,请访问文档链接: https://docs.confluent.io/current/schema-registry/schema_registry_tutorial.html#using-curl-to-interact-with-schema-registry

    以及一些关于一般模式兼容性以及如何在模式注册表中处理/配置的阅读 - https://docs.confluent.io/current/schema-registry/avro.html

    关于apache-kafka - 如何跨团队共享 avro 模式定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57797803/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com