1.2. Service Registry 中的 schema 和 API 工件


Service Registry 中存储的项目(如事件模式和 API 设计)称为 registry 工件。以下显示了简单共享价格应用程序的 JSON 格式的 Apache Avro schema 构件示例:

Avro 模式示例

{
   "type": "record",
   "name": "price",
   "namespace": "com.example",
   "fields": [
       {
           "name": "symbol",
           "type": "string"
       },
       {
           "name": "price",
           "type": "string"
       }
   ]
}

当架构或 API 设计作为 registry 中的工件添加时,客户端应用可以使用该架构或 API 设计验证客户端消息在运行时是否符合正确的数据结构。

Service Registry 为标准事件 schema 和 API 规格支持广泛的消息有效负载格式。例如,支持的格式包括 Apache Avro、Google Protobuf、GraphQL、AsyncAPI、OpenAPI 等。

架构和 API 组

工件组 是可选的 schema 或 API 工件集合。每个组包含一组逻辑相关的模式或 API 设计,通常由单个实体管理,属于特定应用程序或组织。

在添加 schema 和 API 设计时,您可以创建可选的工件组,将它们组织到 Service Registry 中。例如,您可以创建组来匹配您的 开发和生产 应用程序环境,或您的 销售 和工程 组织。

模式和 API 组可以包含多个工件类型。例如,您可以有 Protobuf、Avro、JSON Schema、OpenAPI 或 AsyncAPI 工件在同一组中。

您可以使用 Service Registry Web 控制台、核心 REST API、命令行、Maven 插件或 Java 客户端应用程序创建架构和 API 工件和组。以下简单示例显示了使用 registry 核心 REST API:

$ curl -X POST -H "Content-type: application/json; artifactType=AVRO" \
  -H "X-Registry-ArtifactId: share-price" \
  --data '{"type":"record","name":"price","namespace":"com.example", \
   "fields":[{"name":"symbol","type":"string"},{"name":"price","type":"string"}]}' \
  https://my-registry.example.com/apis/registry/v2/groups/my-group/artifacts

本例创建一个名为 my-group 的构件组,并添加 Avro 模式,工件 ID 为 share-price

注意

在使用 Service Registry web 控制台时指定组是可选的,其中会自动创建默认组。使用 REST API 或 Maven 插件时,如果您不想创建唯一的组,请在 API 路径中指定 default 组。

其他资源

引用其他 schema 和 API

某些 Service Registry 工件类型可以包含从一个 工件文件到另一个工件文件中的工件引用。您可以通过定义可重复使用的模式或 API 组件来创建效率,然后从多个位置引用它们。例如,您可以使用 $ref 语句在 JSON Schema 或 OpenAPI 中指定引用,也可以使用 导入 语句在 Google protobuf 中,或使用嵌套命名空间在 Apache Avro 中指定。

以下示例显示了名为 TradeKey 的简单 Avro 模式,其中包含使用嵌套命名空间对名为 Exchange 的另一个模式引用:

带有嵌套 Exchange 模式的 Tradekey 模式

{
 "namespace": "com.kubetrade.schema.trade",
 "type": "record",
 "name": "TradeKey",
 "fields": [
   {
     "name": "exchange",
     "type": "com.kubetrade.schema.common.Exchange"
   },
   {
     "name": "key",
     "type": "string"
   }
 ]
}

Exchange schema

{
 "namespace": "com.kubetrade.schema.common",
 "type": "enum",
 "name": "Exchange",
 "symbols" : ["GEMINI"]
}

工件引用作为工件元数据的集合存储在 Service Registry 中,它从特定于工件类型的引用中映射到内部 Service Registry 引用。Service Registry 中的每个工件引用由以下组成:

  • 组 ID
  • 工件 ID
  • 工件版本
  • 工件引用名称

您可以使用 Service Registry 核心 REST API、Maven 插件和 Java serializers/deserializers (SerDes)来管理工件引用。Service Registry 存储工件引用以及工件内容。Service Registry 还维护一组所有工件引用,以便您可以搜索或列出特定工件的所有引用。

支持的工件类型

Service Registry 目前仅支持以下工件类型的构件引用:

  • Avro
  • protobuf
  • JSON Schema

其他资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.