Azure Cosmos DB를 사용하는 애플리케이션에서 다중 지역 쓰기 구성

적용 대상: NoSQL

여러 지역 쓰기 시나리오에서는 애플리케이션 인스턴스에 가까운 지역에만 써서 성능 이점을 얻을 수 있습니다. Azure Cosmos DB는 백그라운드에서 복제를 처리합니다.

여러 쓰기 지역에 계정을 사용하도록 설정한 후에는 ConnectionPolicy에 대한 애플리케이션에서 두 가지를 변경해야 합니다. ConnectionPolicy 내에서 UseMultipleWriteLocationstrue로 설정하고 애플리케이션이 배포된 지역 이름을 ApplicationRegion에 전달합니다. 이 작업은 전달된 위치에서 지역 근접도에 따라 PreferredLocations 속성을 채웁니다. 나중에 새 지역이 계정에 추가되는 경우 애플리케이션을 업데이트하거나 다시 배포할 필요가 없습니다. 지역 이벤트가 발생할 경우 더 가까운 지역과 자동 홈을 자동으로 검색합니다.

참고 항목

처음에 단일 쓰기 지역으로 구성된 Azure Cosmos DB 계정을 중단 시간이 0인 다중 쓰기 지역에 구성할 수 있습니다. 자세한 내용은 다중 쓰기 지역 구성을 참조하세요.

Azure Portal

다중 지역 쓰기를 사용하려면 Azure Portal에서 여러 지역에 대해 Azure Cosmos DB 계정을 사용하도록 설정합니다. 애플리케이션에서 쓸 수 있는 지역을 지정합니다.

다중 지역 쓰기를 사용하도록 설정하려면 다음 단계를 사용합니다.

  1. Azure 포털에 로그인합니다.

  2. Azure Cosmos DB 계정으로 이동하여 메뉴에서 전역적으로 데이터 복제 창을 엽니다.

  3. 다중 지역 쓰기 옵션에서 사용을 선택합니다. 이렇게 하면 영역을 읽고 쓰기 위해 기존 영역을 자동으로 추가합니다.

  4. 지도에서 아이콘을 선택하거나 지역 추가 단추를 선택하여 지역을 더 추가할 수 있습니다. 추가하는 모든 지역은 읽기 및 쓰기가 모두 가능하도록 설정됩니다.

  5. 지역 목록을 업데이트한 후 저장을 선택하여 변경 내용을 적용합니다.

    Screenshot to enable multi-region writes using Azure portal.

.NET SDK v2

애플리케이션에서 다중 지역 쓰기를 사용하도록 설정하려면 UseMultipleWriteLocationstrue로 설정합니다. 또한 SetCurrentLocation을 애플리케이션이 배포되고 Azure Cosmos DB가 복제되는 지역으로 설정합니다.

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

.NET SDK v3

애플리케이션에서 다중 지역 쓰기를 사용하도록 설정하려면 ApplicationRegion을 애플리케이션이 배포되고 Azure Cosmos DB가 복제되는 지역으로 설정합니다.

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

애플리케이션에서 다중 지역 쓰기를 사용하도록 설정하려면 클라이언트 작성기에서 .multipleWriteRegionsEnabled(true).preferredRegions(preferredRegions)를 호출합니다. 여기서 preferredRegions는 기본 설정에 따라 데이터가 순서대로 복제되는 지역의 List입니다. 가장 짧은 거리/대기 시간이 가장 짧은 지역이 가장 먼저 있는 지역입니다.

Java SDK V4(Maven com.azure::azure-cosmos) 비동기 API:


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

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

비동기 Java V2 SDK

Java V2 SDK는 Maven com.microsoft.azure::azure-cosmosdb를 사용했습니다. 애플리케이션에서 다중 지역 쓰기를 사용하도록 설정하려면 policy.setUsingMultipleWriteLocations(true)를 설정하고 policy.setPreferredLocations를 기본 설정에 따라 데이터가 순서대로 복제되는 지역의 List로 설정합니다. 가장 짧은 거리/대기 시간이 가장 짧은 지역이 가장 먼저 있는 지역입니다.

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를 기본 설정에 따라 데이터가 순서대로 복제되는 지역으로 설정합니다. 가장 짧은 거리/대기 시간이 가장 짧은 지역이 가장 먼저 있는 지역입니다.

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를 기본 설정에 따라 데이터가 순서대로 복제되는 지역으로 설정합니다. 가장 짧은 거리/대기 시간이 가장 짧은 지역이 가장 먼저 있는 지역입니다.

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)

다음 단계