更新兼容性类型

创建新的架构版本时,架构注册表会检查新版本是否与之前的版本兼容。强制执行架构兼容性有助于确保数据生产者和消费者在数据结构不断发展变化的情况下继续正常工作。

  • 兼容性类型支持的值包括向后向后传递向前向前传递完全完全传递

  • 兼容性类型以 JSON 对象的形式进行管理。例如:

    {
      "compatibility": "BACKWARD"
    }
    
  • 如果未明确设置,架构注册表的兼容性类型默认设置为 Backward

  • 如果未在主题上设置兼容性类型,则该主题会从架构注册表中继承相应值。

  • 在主题级设置的配置会覆盖在架构注册表级设置的配置。

  • 更新兼容性类型只会影响在更新后注册的新架构版本。

如需详细了解兼容性类型,请参阅关于兼容性类型

更新兼容性类型所需的角色和权限

如需获得更新架构注册表或主题的兼容性类型所需的权限,请让您的管理员为您授予项目的 Managed Kafka Schema Registry Editor (roles/managedkafka.schemaRegistryEditor) IAM 角色。 如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

此预定义角色包含更新架构注册表或主题的兼容性类型所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

如需更新架构注册表或主题的兼容性类型,您需要具备以下权限:

  • 为要更新兼容性类型的资源授予以下权限: managedkafka.config.update

您也可以使用自定义角色或其他预定义角色来获取这些权限。

更新架构注册表的兼容性类型

控制台

如需更新整个架构注册表的兼容性类型,请按以下步骤操作:

  1. 在 Google Cloud 控制台中,前往架构注册表页面。

    前往架构注册表

    系统会显示项目中的架构注册表列表。

  2. 点击要更新兼容性类型的架构注册表的名称。

    系统会打开架构注册表详情页面。

  3. 在注册表的主要详细信息部分中,找到兼容性类型设置,然后点击旁边的修改图标。

    系统随即会打开修改兼容性类型页面。

  4. 兼容性类型下拉菜单中,选择相应的值。
  5. 点击保存

gcloud

如需更新架构注册表的兼容性类型,请使用 gcloud alpha managed-kafka schema-registries update 命令。

  gcloud alpha managed-kafka schema-registries update SCHEMA_REGISTRY_ID 
--location=LOCATION
--compatibility=COMPATIBILITY_TYPE
  • SCHEMA_REGISTRY_ID:要更新的架构注册表的 ID。
  • LOCATION:架构注册表的区域。
  • COMPATIBILITY_TYPE:新的兼容性类型。有效值包括 BACKWARDBACKWARD_TRANSITIVEFORWARDFORWARD_TRANSITIVEFULLFULL_TRANSITIVENONE

示例:将 us-central1 区域中 test-registry 架构注册表的兼容性类型更新为 FORWARD

  gcloud alpha managed-kafka schema-registries update test-registry 
--location=us-central1
--compatibility=FORWARD

REST

如需更新架构注册表的兼容性类型,请向 REST API 发出 PUT 请求。

首先,获取访问令牌:

gcloud auth application-default print-access-token

然后,向注册表的配置端点发送 PUT 请求:

PUT https://managedkafka.googleapis.com/v1main/projects/PROJECT_ID/locations/LOCATION/schemaRegistries/SCHEMA_REGISTRY_ID/config

替换以下路径参数:

  • PROJECT_ID:您的 Google Cloud 项目 ID。
  • LOCATION:架构注册表所在的区域。
  • SCHEMA_REGISTRY_ID:架构注册表的 ID。

在请求正文中添加以下 JSON 对象:

{
  "compatibility": "COMPATIBILITY_TYPE"
}

COMPATIBILITY_TYPE 替换为有效值,例如 NONEBACKWARDFORWARDFULL

如果成功,API 会返回 200 OK 状态代码。

更新主题的兼容性类型

控制台

如需更新特定主题的兼容性类型,请按以下步骤操作:

  1. 在 Google Cloud 控制台中,前往架构注册表页面。

    前往架构注册表

  2. 点击包含主题的架构注册表的名称。

    系统会打开架构注册表详情页面。

  3. 此架构注册表中的主题表格中,点击相应主题的名称。
  4. 找到相应主题的兼容性类型设置,然后点击旁边的修改图标。

    系统随即会打开修改兼容性类型页面。

  5. 兼容性类型下拉菜单中,选择相应的值。在此处选择值会覆盖相应主题的注册表级设置。
  6. 点击保存

gcloud

如需更新主题的兼容性类型,请使用 gcloud alpha managed-kafka schema-registries subject update 命令。

  gcloud alpha managed-kafka schema-registries subject update SUBJECT_ID 
--schema-registry=SCHEMA_REGISTRY_ID
--location=LOCATION
--compatibility=COMPATIBILITY_TYPE
  • SUBJECT_ID:要更新的正文的 ID。
  • SCHEMA_REGISTRY_ID:包含主题的架构注册表的 ID。
  • LOCATION:架构注册表的区域。
  • COMPATIBILITY_TYPE:新的兼容性类型。有效值包括 BACKWARDBACKWARD_TRANSITIVEFORWARDFORWARD_TRANSITIVEFULLFULL_TRANSITIVENONE

示例:将 us-central1 区域中 test-registry 架构注册表内 test-subject 主题的兼容性类型更新为 FORWARD_TRANSITIVE

  gcloud alpha managed-kafka schema-registries subject update test-subject 
--schema-registry=test-registry
--location=us-central1
--compatibility=FORWARD_TRANSITIVE

REST

如需更新主题的兼容性类型,请向 REST API 发出 PUT 请求。

首先,获取访问令牌:

gcloud auth application-default print-access-token

更新默认上下文中的主题的兼容性:

PUT https://managedkafka.googleapis.com/v1main/projects/PROJECT_ID/locations/LOCATION/schemaRegistries/SCHEMA_REGISTRY_ID/config/SUBJECT_ID

更新特定上下文中的主题的兼容性:

PUT https://managedkafka.googleapis.com/v1main/projects/PROJECT_ID/locations/LOCATION/schemaRegistries/SCHEMA_REGISTRY_ID/contexts/CONTEXT_ID/config/SUBJECT_ID

替换以下路径参数:

  • PROJECT_ID:您的 Google Cloud 项目 ID。
  • LOCATION:架构注册表所在的区域。
  • SCHEMA_REGISTRY_ID:架构注册表的 ID。
  • SUBJECT_ID:相应主题的 ID。
  • CONTEXT_ID:上下文的 ID(如适用)。

在请求正文中添加以下 JSON 对象:

{
  "compatibility": "COMPATIBILITY_TYPE"
}

COMPATIBILITY_TYPE 替换为有效值,例如 FORWARD_TRANSITIVE

示例:将主题 user_events 兼容性设置为 FORWARD_TRANSITIVE

发给PUT https://managedkafka.googleapis.com/v1main/projects/test-project/locations/us-central1/schemaRegistries/test_registry/config/user_events的汇款请求

包含正文:

{
  "compatibility": "FORWARD_TRANSITIVE"
}

如果成功,API 会返回 200 OK 状态代码。

后续步骤

Apache Kafka® 是 Apache Software Foundation 或其关联公司在美国和/或其他国家/地区的注册商标。