在應用程式中設定使用 Azure 和 DB 的多Cosmos寫入

適用于 :SQL API

啟用多個寫入區域的帳戶建立之後,您必須在應用程式中對 Cosmos 用戶端的 ConnectionPolicy 進行兩次變更,才能在 Azure Cosmos DB 中啟用多區域寫入。 在 ConnectionPolicy 中,將 UseMultipleWriteLocations 設為 True,並傳遞應用程式部署到 ApplicationRegion 的區功能變數名稱稱。 這會根據傳入位置的地理位置鄰近性來填入 PreferredLocations 屬性。 如果稍後將新區域新增到帳戶,則應用程式不需要更新或重新部署,它會自動偵測到較靠近的區域,並且會在發生地區事件時自動上主區。

注意

Cosmos一開始使用單一寫入區域所配置的帳戶,可以將它配置為多個寫入區域,而下拉時間為零。 若要深入瞭解,請 設定多寫入區域

Azure 入口網站

若要從 Azure 入口網站啟用多區域寫入,請使用下列步驟:

  1. 請登錄 Azure 入口網站

  2. 流覽至您的 Azure Cosmos帳戶,然後從功能表開啟全域複製資料窗格。

  3. 在多區域寫入選項下,選擇啟用。 它會自動新增現有區域以讀取和寫入區域。

  4. 您可以選取地圖上的圖示或選取新增區域按鈕來 新增其他 區域。 您新增的所有區域都會同時啟用讀取和寫入功能。

  5. 更新區域清單之後,請選取 儲存 以適用變更。

    使用 Azure 入口網站啟用多區域寫入的螢幕擷取畫面

.NET SDK v2

若要在應用程式中啟用多區域寫入,請設為 UseMultipleWriteLocationstrue 。 此外, SetCurrentLocation 設定為應用程式部署的區域,以及 Azure Cosmos資料庫的複製位置:

ConnectionPolicy policy = new ConnectionPolicy
    {
        ConnectionMode = ConnectionMode.Direct,
        ConnectionProtocol = Protocol.Tcp,
        UseMultipleWriteLocations = true
    };
policy.SetCurrentLocation("West US 2");

.NET SDK v3

若要在應用程式中啟用多區域寫入,請設定為應用程式部署的區域,以及複製 ApplicationRegion 資料庫Cosmos位置:

CosmosClient cosmosClient = new CosmosClient(
    "<connection-string-from-portal>", 
    new CosmosClientOptions()
    {
        ApplicationRegion = Regions.WestUS2,
    });

您也可以使用 和 CosmosClientBuilderWithApplicationRegion 來取得相同的結果:

CosmosClientBuilder cosmosClientBuilder = new CosmosClientBuilder("<connection-string-from-portal>")
            .WithApplicationRegion(Regions.WestUS2);
CosmosClient client = cosmosClientBuilder.Build();

JAVA V4 SDK

若要在應用程式中啟用多區域寫入,請呼叫用戶端建立器 ,其中包含一個元素 ,即應用程式部署的區域,以及複製資料庫Cosmos .multipleWriteRegionsEnabled(true).preferredRegions(preferredRegions)preferredRegionsList 位置:

JAVA SDK V4 (Maven com.azure::azure-cosmos) Async API


ArrayList<String> preferredRegions = new ArrayList<String>();
preferredRegions.add(region);

CosmosAsyncClient client =
        new CosmosClientBuilder()
                .endpoint(HOST)
                .key(MASTER_KEY)
                .multipleWriteRegionsEnabled(true)
                .preferredRegions(preferredRegions)
                .buildAsyncClient();

Async JAVA V2 SDK

JAVA V2 SDK 使用 Maven com.microsoft.azure::azure-cosmosdb。 若要在應用程式中啟用多區域寫入,請設定並設定應用程式部署的區域,以及複製 policy.setUsingMultipleWriteLocations(true)policy.setPreferredLocations 資料庫Cosmos位置:

ConnectionPolicy policy = new ConnectionPolicy();
policy.setUsingMultipleWriteLocations(true);
policy.setPreferredLocations(Collections.singletonList(region));

AsyncDocumentClient client =
    new AsyncDocumentClient.Builder()
        .withMasterKeyOrResourceToken(this.accountKey)
        .withServiceEndpoint(this.accountEndpoint)
        .withConsistencyLevel(ConsistencyLevel.Eventual)
        .withConnectionPolicy(policy).build();

Node.js、JavaScript 和 TypeScript SDK

若要在應用程式中啟用多區域寫入,請設為 connectionPolicy.UseMultipleWriteLocationstrue 。 此外,設定為應用程式部署的區域,以及複製 connectionPolicy.PreferredLocations 資料庫Cosmos位置:

const connectionPolicy: ConnectionPolicy = new ConnectionPolicy();
connectionPolicy.UseMultipleWriteLocations = true;
connectionPolicy.PreferredLocations = [region];

const client = new CosmosClient({
  endpoint: config.endpoint,
  auth: { masterKey: config.key },
  connectionPolicy,
  consistencyLevel: ConsistencyLevel.Eventual
});

Python SDK

若要在應用程式中啟用多區域寫入,請設為 connection_policy.UseMultipleWriteLocationstrue 。 此外,設定為應用程式部署的區域,以及複製 connection_policy.PreferredLocations 資料庫Cosmos位置。

connection_policy = documents.ConnectionPolicy()
connection_policy.UseMultipleWriteLocations = True
connection_policy.PreferredLocations = [region]

client = cosmos_client.CosmosClient(self.account_endpoint, {
                                    'masterKey': self.account_key}, connection_policy, documents.ConsistencyLevel.Session)

下一個步驟

閱讀下列文章: