Konfigurace zápisů do více oblastí v aplikacích, které používají Azure Cosmos DB
PLATÍ PRO: NoSQL
Ve scénářích zápisu do více oblastí můžete získat výhodu výkonu zápisem pouze do oblasti blízko instance aplikace. Azure Cosmos DB zpracovává replikaci za vás na pozadí.
Po povolení účtu pro více oblastí zápisu musíte v aplikaci ConnectionPolicy
provést dvě změny v . V rámci nastavte UseMultipleWriteLocations
ConnectionPolicy
na true
a předejte název oblasti, ve které je aplikace nasazená do ApplicationRegion
. Tato akce naplní PreferredLocations
vlastnost na základě geografické blízkosti z předaného umístění. Pokud se do účtu později přidá nová oblast, není nutné aplikaci aktualizovat ani znovu nasazovat. Automaticky zjistí bližší oblast a automaticky se k ní přiblíží, pokud dojde k místní události.
Poznámka
Účty Služby Azure Cosmos DB, které byly původně nakonfigurované s jednou oblastí zápisu, je možné nakonfigurovat na několik oblastí zápisu s nulovou dobou výpadku. Další informace najdete v tématu Konfigurace více oblastí zápisu.
portál Azure
Pokud chcete používat zápisy do více oblastí, povolte účet služby Azure Cosmos DB pro více oblastí pomocí Azure Portal. Určete, do kterých oblastí může aplikace zapisovat.
Pokud chcete povolit zápisy do více oblastí, postupujte následovně:
Přihlaste se k webu Azure Portal.
Přejděte do svého účtu služby Azure Cosmos DB a v nabídce otevřete podokno Globální replikace dat .
V části Zápisy do více oblastí zvolte Povolit. Automaticky přidá existující oblasti do oblastí čtení a zápisu.
Další oblasti můžete přidat tak, že vyberete ikony na mapě nebo vyberete tlačítko Přidat oblast . Všechny oblasti, které přidáte, mají povolené čtení i zápis.
Po aktualizaci seznamu oblastí vyberte Uložit , aby se změny použily.
Sada .NET SDK v2
Pokud chcete v aplikaci povolit zápisy do více oblastí, nastavte UseMultipleWriteLocations
na true
. Nastavte SetCurrentLocation
také oblast, ve které se aplikace nasazuje a ve které se replikuje Azure Cosmos DB:
ConnectionPolicy policy = new ConnectionPolicy
{
ConnectionMode = ConnectionMode.Direct,
ConnectionProtocol = Protocol.Tcp,
UseMultipleWriteLocations = true
};
policy.SetCurrentLocation("West US 2");
Sada .NET SDK v3
Pokud chcete ve své aplikaci povolit zápisy do více oblastí, nastavte ApplicationRegion
na oblast, ve které se aplikace nasazuje a ve které se replikuje Azure Cosmos DB:
CosmosClient cosmosClient = new CosmosClient(
"<connection-string-from-portal>",
new CosmosClientOptions()
{
ApplicationRegion = Regions.WestUS2,
});
Volitelně můžete k dosažení stejného výsledku CosmosClientBuilder
použít a WithApplicationRegion
:
CosmosClientBuilder cosmosClientBuilder = new CosmosClientBuilder("<connection-string-from-portal>")
.WithApplicationRegion(Regions.WestUS2);
CosmosClient client = cosmosClientBuilder.Build();
Java V4 SDK
Pokud chcete ve své aplikaci povolit zápisy do více oblastí, zavolejte .multipleWriteRegionsEnabled(true)
a .preferredRegions(preferredRegions)
v tvůrci klienta, kde preferredRegions
je List
oblast, do které se data replikují do seřazených podle preference – v ideálním případě nejdříve oblasti s nejkratší vzdáleností nebo nejlepší latencí:
Async API sady Java SDK v4 (Maven com.azure::azure-cosmos):
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
Sada Java SDK verze 2 používala Maven com.microsoft.azure::azure-cosmosdb. Pokud chcete ve své aplikaci povolit zápisy do více oblastí, nastavte policy.setUsingMultipleWriteLocations(true)
a nastavte policy.setPreferredLocations
na List
oblasti, do kterých se data replikují seřazené podle předvoleb – v ideálním případě nejdříve oblasti s nejkratší vzdáleností nebo nejlepší latencí:
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();
sady SDK Node.js, JavaScript a TypeScript
Pokud chcete v aplikaci povolit zápisy do více oblastí, nastavte connectionPolicy.UseMultipleWriteLocations
na true
. Nastavte connectionPolicy.PreferredLocations
také oblasti, do kterých se data replikují seřazené podle preference – ideálně nejdřív oblasti s nejkratší vzdáleností nebo nejlepší latencí:
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
Pokud chcete v aplikaci povolit zápisy do více oblastí, nastavte connection_policy.UseMultipleWriteLocations
na true
. Nastavte connection_policy.PreferredLocations
také na oblasti, do kterých se data replikují seřazené podle preference – v ideálním případě nejdříve oblasti s nejkratší vzdáleností nebo nejlepší latencí.
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)