建立新的結構定義版本時,結構定義登錄會檢查新版本是否與舊版相容。強制執行結構定義相容性 有助於確保資料生產者和消費者在資料結構演進時,仍能正常運作。
相容性類型支援的值包括「Backward」(回溯)、「Backward transitive」(回溯遞移)、「Forward」(前向)、「Forward transitive」(前向遞移)、「Full」(完整)、「Full transitive」(完整遞移) 或「None」(無)。
相容性類型是以 JSON 物件形式管理。例如:
{ "compatibility": "BACKWARD" }如果未明確設定,結構定義儲存庫的相容性類型預設為「向後相容」。
如果主體未設定相容性類型,就會從結構定義儲存庫繼承值。
主體層級的設定會覆寫結構定義登錄層級的設定。
更新相容性類型只會影響更新後註冊的新結構定義版本。
如要進一步瞭解相容性類型,請參閱「關於相容性類型」。
更新相容性類型所需的角色和權限
如要取得更新結構定義儲存庫或主體相容性類型所需的權限,請要求管理員授予您專案的「Managed Kafka 結構定義儲存庫編輯者 」(roles/managedkafka.schemaRegistryEditor) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。
這個預先定義的角色具備更新結構定義儲存庫或主體相容性類型所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:
所需權限
如要更新結構定義儲存庫或主體的相容性類型,您必須具備下列權限:
-
針對要更新相容性類型的資源,授予下列權限:
managedkafka.config.update
更新結構定義儲存庫的相容性類型
控制台
如要更新整個結構定義儲存庫的相容性類型,請按照下列步驟操作:
- 前往 Google Cloud 控制台的「Schema registries」頁面。
畫面會顯示專案中的結構定義登錄清單。
- 按一下要更新相容性類型的結構定義儲存庫名稱。
「結構定義登錄詳細資料」頁面隨即開啟。
- 在登錄檔的主要詳細資料區段中,找出「相容性類型」設定,然後按一下旁邊的「編輯」圖示。
「編輯相容性類型」頁面隨即開啟。
- 從「相容性類型」下拉式選單中選取值。
- 按一下 [儲存]。
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:新的相容性類型。有效值包括BACKWARD、BACKWARD_TRANSITIVE、FORWARD、FORWARD_TRANSITIVE、FULL、FULL_TRANSITIVE或NONE。
範例:將 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 替換為有效值,例如 NONE、BACKWARD、FORWARD 或 FULL。
如果成功,API 會傳回 200 OK 狀態碼。
更新主體的相容性類型
控制台
如要更新特定主題的相容性類型,請按照下列步驟操作:
- 前往 Google Cloud 控制台的「Schema registries」頁面。
- 按一下包含主體的結構定義登錄名稱。
「結構定義登錄詳細資料」頁面隨即開啟。
- 在「這個結構定義儲存庫中的主體」表格中,按一下主體名稱。
- 找出主體的「相容性類型」設定,然後點選旁邊的「編輯」圖示。
「編輯相容性類型」頁面隨即開啟。
- 從「相容性類型」下拉式選單中選取值。選擇這裡的值會覆寫這個主題的登錄檔層級設定。
- 按一下 [儲存]。
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:新的相容性類型。有效值包括BACKWARD、BACKWARD_TRANSITIVE、FORWARD、FORWARD_TRANSITIVE、FULL、FULL_TRANSITIVE或NONE。
範例:將 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 狀態碼。