如何在团队之间共享Avro架构定义 [英] how to share avro schema definitions across teams

查看:127
本文介绍了如何在团队之间共享Avro架构定义的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

Kafka模式注册中心提供了一种很好的方式来使用公共数据契约序列化和反序列化Kafka中的数据。但是,数据约定(.avsc文件)是生产者和消费者之间的粘合剂。

一旦生产者生成了.avsc文件,就可以将其签入到生产者端的版本控制中。根据语言的不同,它还会自动生成类。

但是,

  1. 使用者获取架构定义以供参考的最佳机制是什么?有没有类似swaggerHub或Avro的典型API文档门户?
  2. 如果我们使用合流平台,控制中心提供了一个gui来查看与主题相关联的架构,但它也允许用户进行编辑。它将如何在生产者和消费者团队之间发挥作用?什么会阻止使用者或任何人在合流平台上直接编辑架构?
  3. 这是我们需要使用REST-Proxy自定义生成的内容吗?

推荐答案

您谈论的是使用avro架构的两种不同方式:

  • 让架构注册表为您存储架构。
  • 生成.avsc文件并使其可供下游使用者使用。
在第一种方法中,您的生产者将拥有一个.avsc文件,该文件用于序列化消息并将它们发送到Kafka,但如果您使用的是模式注册中心,则不必担心消费者需要实际的avro定义,因为使用模式id可以从模式注册中心获得整个avro模式。您没有实际生成的类,但您仍然可以"遍历"整个消息,并从中提取数据。

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

因此,如果您使用模式注册表,Kafka使用者(如果配置正确)将自动获取每条消息所需的模式,然后您可以提取所需的数据。另外,您还可以获得任何主题的最新架构,如下所示:

  curl -X GET "http://schema-registry.company.com:8081/subjects/your_topic-value/versions/latest/schema"

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

有关如何与架构注册表交互的详细信息,请访问指向文档的链接: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

这篇关于如何在团队之间共享Avro架构定义的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆