schema_registry_converter:使用Rust编写的Kafka Schema Registry


消息是作为记录存储在 Kafka 上:记录有一个值和一个可选的键,它们都是二进制格式。
另一个重要的事实是 Kafka 使用主题来拆分消息。一个主题可能存在多个主题分区,用于使其可扩展。部分配置是特定于主题的。例如,关于某些主题的数据可以比其他主题保留更长时间,或者可以配置为compacted永远不会删除具有相同密钥的最后一条消息。

由于数据以二进制格式存储,因此对于生成数据的应用程序而言,以使用数据的应用程序可以理解这些字节的方式执行此操作非常重要。一种简单的方法是将数据序列化为 JSON。特别是因为它是人类可读的,并且在大多数编程语言中都易于使用。这确实降低了消费者的透明度,并且还有一些其他缺点,例如消息相对较大。
要更好地控制数据并将其存储为二进制格式,可以使用schema注册表。Kafka 最常用的注册表之一是Confluent Schema Registry

Confluent Schema Registry 
Schema Registry 是一个具有一些 Rest 端点的应用程序,可以从中注册和检索schema。
它曾经只支持 Apache Avro。后来添加了对ProtobufJSON Schema的支持。

想要生成数据,选择注册一个新schema并获得正确的 ID;消费者将使用编码后的 ID 来获取用于生成数据的模式。
它还可以与Spring Cloud Stream等其他框架一起使用。

在您的应用程序中使用 JVM 语言时,这一切都很棒,但在使用其他编程语言时可能是一个挑战。部分原因是因为schema注册表产生的字节是特定于schema注册表的。


schema_registry_converter
这个库提供了一种以符合Java客户端的方式使用Confluent Schema Registry的方法。由于Karapace是API兼容的,它也可以和这个库一起使用。

与Java版本相比,它应该是功能完整的。如果有任何遗漏或不符合预期的工作,请创建一个问题或在github讨论中开始讨论。在ksqlDB-GraphQL-poc中可以找到一个使用这个库与protobuf异步产生数据到Kafka的例子。