领先一步
VMware 提供培训和认证,助您加速进步。
了解更多本博客将介绍 Spring Cloud Stream 4.0.x 版本中 Schema Registry 支持的最新情况。
许多企业使用 Schema Registry 来处理模式演进用例,例如 Confluent Schema Registry。从 Spring Cloud Stream 的 1.1.x 版本到 3.0.0 版本,我们提供了 Schema Registry 服务器以及基于 AVRO 的 Schema Registry 客户端转换器,这些转换器可以从 Schema Registry 服务器协调模式。Spring Cloud Stream 3.0.0 版本将 Schema Registry 组件移至了一个顶级 spring-cloud 项目,并且 Spring Cloud Stream 将其包含在其 BOM 中供最终用户应用程序使用。然而,这种方式扩展性不佳,在 3.2 版本中,我们决定停止将其作为 Spring Cloud Stream BOM 的一部分。
Schema Registry 在流处理应用程序中的用例非常吸引人,社区一直热切希望从核心 Spring Cloud Stream 中获得解决方案。我们很高兴地通知您,Schema Registry 组件已回归 Spring Cloud Stream 4.0.0 版本。这条路径对于这些 Schema Registry 组件来说是一次完整的回归。下面,我们将重新介绍这些组件并简要概述其功能。
Spring Cloud Stream 4.0.x 版本提供了一个独立的 Schema Registry 服务器,专门为 Spring Cloud Stream 所解决的用例量身定制。这些用例涵盖了跨多个模式版本的模式演进。这些用例的核心思想是,生产者应用程序使用之前的模式版本发布消息,而消费者应用程序则以向后兼容的方式处理所有模式版本。这些工作流程包括模式验证,并将经过验证的模式用作消息转换器进行数据序列化的合同和基础。我们不建议在 Spring Cloud Stream 之外使用此 Schema Registry 服务器。默认情况下,此 Schema Registry 服务器使用内存中的 H2 数据库作为后端存储。但是,您也可以使用 Postgres 或 MySQL 作为后端数据库。Spring Cloud Stream 将此 Schema Registry 服务器作为功能齐全的 Spring Boot 应用程序提供。因此,您可以在 Maven Central 直接下载它(当 Spring Cloud Stream 4.0.0 正式发布时)。如果您想在快照或里程碑版本上进行尝试,可以从相应的 Artifactory 存储库下载。以下是 4.0.0-SNAPSHOT 版本的 Maven 坐标。如果您不想使用快照进行测试,也可以使用 4.0.0-M5 或 4.0.0-RC1。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-stream-schema-registry-server</artifactId>
<version>4.0.0-SNAPSHOT</version>
</dependency>
如果您想使用非独立 Schema Registry 服务器而是自定义服务器,则可以将服务器模块作为依赖项包含在您的应用程序中,并通过启用 @EnableSchemaRegistryServer 来创建自定义 Spring Boot 应用程序。如果您有不支持的后端存储,则应使用此策略。
Spring Cloud Stream 4.0.0 还提供了一个 Schema Registry 客户端模块,该模块提供基于 AVRO 的消息转换器。这些转换器感知 Schema Registry,并与 Schema Registry 服务器通信,以协调模式,同时转换用于序列化的有效负载。应用程序需要使用 @EnableSchemaRegistryClient 注解,通过 SchemaRegistryClient bean 使其感知 Schema Registry 服务器。Spring Boot 会自动配置感知 Schema Registry 的基于 AVRO 的消息转换器。
以下是 4.0.0-SNAPSHOT 版本 Schema Registry 客户端模块的 Maven 坐标。您也可以使用 4.0.0-M5 或 4.0.0-RC1。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-stream-schema-registry-client</artifactId>
<version>4.0.0-SNAPSHOT</version>
</dependency>
Confluent Schema Registry 是一个流行的商业解决方案,用于处理基于 Kafka 的应用程序的模式演进。上述 Spring Cloud Stream AVRO 消息转换器可以与 Confluent Schema Registry 一起使用。要实现这一点,应用程序需要覆盖 SchemaRegistryClient bean 并为 ConfluentSchemaRegistryClient 提供实现。
我们提供了一套示例应用程序,演示了本博客中描述的所有概念,在此处。请参阅 README 以获取更多详细信息。
在此处 是 Schema Registry 参考文档。
Spring Cloud Stream 4.0.0 将来自早期 Spring Cloud Stream 版本的 Schema Registry 组件重新引入。本博客探讨了重新引入该支持的动机和概述。Spring Cloud Stream 中提供的支持可能仅涵盖部分模式演进用例。然而,提供的 Schema Registry 组件可以支持许多属于 Spring Cloud Stream 应用程序范畴的模式演进用例,并带来传输无关的附加价值。