Konfigurowanie zapisów w wielu regionach w aplikacjach korzystających z usługi Azure Cosmos DB
DOTYCZY: NoSQL
W scenariuszach zapisu w wielu regionach można uzyskać korzyść z wydajności, zapisując tylko w regionie zbliżonym do wystąpienia aplikacji. Usługa Azure Cosmos DB obsługuje replikację za kulisami.
Po włączeniu konta dla wielu regionów zapisu należy wprowadzić dwie zmiany w aplikacji w pliku ConnectionPolicy
. W elemecie ConnectionPolicy
ustaw UseMultipleWriteLocations
true
wartość i przekaż nazwę regionu, w którym aplikacja jest wdrażana w programie ApplicationRegion
. Ta akcja wypełnia właściwość w oparciu PreferredLocations
o bliskość geograficzną z przekazanej lokalizacji. Jeśli nowy region zostanie później dodany do konta, aplikacja nie musi być aktualizowana ani wdrażana ponownie. Automatycznie wykrywa bliżej region i automatyczne domy na nim w przypadku wystąpienia zdarzenia regionalnego.
Uwaga
Konta usługi Azure Cosmos DB początkowo skonfigurowane z pojedynczym regionem zapisu można skonfigurować do wielu regionów zapisu z zerowym czasem awarii. Aby dowiedzieć się więcej, zobacz Konfigurowanie regionów wielokrotnego zapisu.
Azure Portal
Aby używać zapisów w wielu regionach, włącz konto usługi Azure Cosmos DB dla wielu regionów przy użyciu witryny Azure Portal. Określ regiony, w których aplikacja może zapisywać dane.
Aby włączyć zapisy w wielu regionach, wykonaj następujące kroki:
Zaloguj się w witrynie Azure Portal.
Przejdź do konta usługi Azure Cosmos DB i z menu otwórz okienko Replikuj dane globalnie .
W obszarze opcji Zapisy w wielu regionach wybierz pozycję Włącz. Automatycznie dodaje istniejące regiony do regionów odczytu i zapisu.
Możesz dodać więcej regionów, wybierając ikony na mapie lub wybierając przycisk Dodaj region . Wszystkie dodane regiony mają włączone operacje odczytu i zapisu.
Po zaktualizowaniu listy regionów wybierz pozycję Zapisz , aby zastosować zmiany.
.NET SDK 2
Aby włączyć zapisy w wielu regionach w aplikacji, ustaw wartość UseMultipleWriteLocations
true
. Ponadto ustaw na SetCurrentLocation
region, w którym aplikacja jest wdrażana i gdzie jest replikowana usługa Azure Cosmos DB:
ConnectionPolicy policy = new ConnectionPolicy
{
ConnectionMode = ConnectionMode.Direct,
ConnectionProtocol = Protocol.Tcp,
UseMultipleWriteLocations = true
};
policy.SetCurrentLocation("West US 2");
.NET SDK 3
Aby włączyć zapisy w wielu regionach w aplikacji, ustaw na ApplicationRegion
region, w którym aplikacja jest wdrażana i gdzie jest replikowana usługa Azure Cosmos DB:
CosmosClient cosmosClient = new CosmosClient(
"<connection-string-from-portal>",
new CosmosClientOptions()
{
ApplicationRegion = Regions.WestUS2,
});
Opcjonalnie możesz użyć elementu CosmosClientBuilder
i WithApplicationRegion
, aby uzyskać ten sam wynik:
CosmosClientBuilder cosmosClientBuilder = new CosmosClientBuilder("<connection-string-from-portal>")
.WithApplicationRegion(Regions.WestUS2);
CosmosClient client = cosmosClientBuilder.Build();
Zestaw SDK języka Java w wersji 4
Aby włączyć zapisy w wielu regionach w aplikacji, wywołaj .multipleWriteRegionsEnabled(true)
metodę i .preferredRegions(preferredRegions)
w konstruktorze klienta, gdzie jest regionemList
, w którym preferredRegions
dane są replikowane do uporządkowanych według preferencji — najlepiej regionów z najkrótszym dystansem/najlepszym opóźnieniem:
Zestaw JAVA SDK w wersji 4 (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
Zestaw SDK języka Java w wersji 2 używał witryny Maven com.microsoft.azure::azure-cosmosdb. Aby włączyć zapisy w wielu regionach w aplikacji, ustaw policy.setUsingMultipleWriteLocations(true)
i ustaw dla policy.setPreferredLocations
List
regionów, w których dane są replikowane według preferencji — najlepiej regionów z najkrótszym dystansem/najlepszym opóźnieniem:
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();
zestawy SDK Node.js, JavaScript i TypeScript
Aby włączyć zapisy w wielu regionach w aplikacji, ustaw wartość connectionPolicy.UseMultipleWriteLocations
true
. Ponadto ustaw na connectionPolicy.PreferredLocations
regiony, w których dane są replikowane według preferencji — najlepiej regiony o najkrótszym dystansie/najlepszym opóźnieniu:
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
});
Zestaw SDK dla języka Python
Aby włączyć zapisy w wielu regionach w aplikacji, ustaw wartość connection_policy.UseMultipleWriteLocations
true
. Ponadto ustaw na connection_policy.PreferredLocations
regiony, w których dane są replikowane według preferencji — najlepiej regiony o najkrótszym dystansie/najlepszym opóźnieniu.
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)