Spring Cloud Stream 4.0.0 Schema Registry 支援更新

工程 | Soby Chacko | 2022 年 11 月 10 日 | ...

這篇部落格介紹了 Spring Cloud Stream 4.0.x 版本中包含的 Schema Registry 支援的最新情況。

許多企業使用 schema registry 來處理 schema 演進用例,例如 Confluent Schema Registry。從 Spring Cloud Stream 1.1.x 版本到 3.0.0 版本,我們提供了 schema registry 伺服器和基於 AVRO 的 schema registry 客戶端轉換器,它們可以從 schema registry 伺服器協調 schema。Spring Cloud Stream 3.0.0 版本將 Schema Registry 元件移到了頂級 spring-cloud 專案中,並且 Spring Cloud Stream 將它們包含在其 BOM(Bill of Materials)中供終端使用者應用程式使用。然而,這種方式擴充套件性不佳,在 3.2 版本中,我們決定不再將它們作為 Spring Cloud Stream BOM 的一部分。

Schema registry 在流式應用程式中的用例非常引人注目,社群一直渴望 Spring Cloud Stream 核心提供一個解決方案。我們很高興通知您,schema registry 元件已迴歸 Spring Cloud Stream 的 4.0.0 版本。對於這些 schema registry 元件來說,這是一次完整的迴歸之旅。下面,我們將重新介紹這些元件並簡要概述它們的功能。

Spring Cloud Stream Schema Registry Server

Spring Cloud Stream 4.0.x 版本附帶了一個獨立的 Schema Registry 伺服器,該伺服器專為 Spring Cloud Stream 所解決的用例而定製。這些用例包括跨多個 schema 版本的 schema 演進。這些用例的核心要點是生產者應用程式使用舊的 schema 版本釋出,而消費者則以向後相容的方式處理所有 schema 版本。這些工作流程包括 schema 驗證,並將經過驗證的 schema 作為契約和訊息轉換器進行資料序列化的基礎。我們不建議在 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-M54.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 Schema Registry Client

Spring Cloud Stream 4.0.0 還提供了一個 Schema Registry 客戶端模組,該模組提供基於 AVRO 的訊息轉換器。這些轉換器感知 Schema Registry,並與 Schema Registry 伺服器通訊以協調 schema,同時進行有效載荷的序列化轉換。應用程式需要使用註解 @EnableSchemaRegistryClient 來透過 SchemaRegistryClient bean 感知 schema registry 伺服器。Spring Boot 會自動配置感知 schema registry 的基於 AVRO 的訊息轉換器。

以下是 4.0.0-SNAPSHOT 版本的 schema registry 客戶端模組的 Maven 座標。您也可以使用 4.0.0-M54.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 伺服器與 Spring Cloud Stream Schema Registry Client 結合使用

Confluent Schema Registry 是一個流行的商業解決方案,用於 Kafka 應用程式的 schema 演進。上面提到的 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 演進用例。但是,所提供的 schema registry 元件可以在傳輸無關的價值增值方面支援 Spring Cloud Stream 應用程式的許多 schema 演進用例。

獲取 Spring 電子報

訂閱 Spring 電子報,保持聯絡

訂閱

領先一步

VMware 提供培訓和認證,助力您加速發展。

瞭解更多

獲取支援

Tanzu Spring 提供 OpenJDK™、Spring 和 Apache Tomcat® 的支援和二進位制檔案,只需一個簡單的訂閱。

瞭解更多

即將到來的活動

檢視 Spring 社群所有即將到來的活動。

檢視全部