Konfigurace zápisů do více oblastí v aplikacích, které používají Službu 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 vaší 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 části ConnectionPolicy
, nastavena UseMultipleWriteLocations
na true
a předejte název oblasti, do ApplicationRegion
které je aplikace nasazena . Tato akce naplní PreferredLocations
vlastnost na základě geografické blízkosti z místa předaného. Pokud se do účtu přidá nová oblast, aplikace se nemusí aktualizovat ani znovu nasadit. Automaticky rozpozná blíže oblast a automaticky se k ní přiblíží, pokud dojde k regionální události.
Poznámka:
Účty Služby Azure Cosmos DB, které jsou původně nakonfigurované s jednou oblastí zápisu, je možné nakonfigurovat na více oblastí zápisu s nulovým časovým limitem. Další informace najdete v tématu Konfigurace oblastí s více zápisy.
portál Azure
Pokud chcete použít zápisy do více oblastí, povolte účet služby Azure Cosmos DB pro více oblastí pomocí webu Azure Portal. Určete, do kterých oblastí může vaš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ápisy.
Po aktualizaci seznamu oblastí vyberte Uložit , aby se změny použily.
Sada .NET SDK v2
Pokud chcete ve své aplikaci povolit zápisy do více oblastí, nastavte UseMultipleWriteLocations
na true
hodnotu . Nastavte SetCurrentLocation
také oblast, ve které se aplikace nasazuje a kde se replikuje služba 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 vaší aplikaci povolit zápisy do více oblastí, nastavte ApplicationRegion
ji na oblast, ve které se aplikace nasazuje a kde se replikuje azure Cosmos DB:
CosmosClient cosmosClient = new CosmosClient(
"<connection-string-from-portal>",
new CosmosClientOptions()
{
ApplicationRegion = Regions.WestUS2,
});
Volitelně můžete použít CosmosClientBuilder
a WithApplicationRegion
dosáhnout stejného výsledku:
CosmosClientBuilder cosmosClientBuilder = new CosmosClientBuilder("<connection-string-from-portal>")
.WithApplicationRegion(Regions.WestUS2);
CosmosClient client = cosmosClientBuilder.Build();
Java V4 SDK
Pokud chcete ve vaší aplikaci povolit zápisy do více oblastí, zavolejte .multipleWriteRegionsEnabled(true)
a .preferredRegions(preferredRegions)
v tvůrci klientů, kde preferredRegions
se List
data replikují do seřazených podle předvoleb – ideálně oblasti s nejkratší vzdáleností nebo nejlepší latencí:
Asynchronní rozhraní 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 V2 používala maven com.microsoft.azure::azure-cosmosdb. Pokud chcete ve vaší aplikaci povolit zápisy do více oblastí, nastavte policy.setUsingMultipleWriteLocations(true)
je a nastavte policy.setPreferredLocations
na List
oblasti, do kterých se data replikují podle předvoleb – ideálně oblasti s nejkratší vzdáleností a 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 pro Node.js, JavaScript a TypeScript
Pokud chcete ve své aplikaci povolit zápisy do více oblastí, nastavte connectionPolicy.UseMultipleWriteLocations
na true
hodnotu . Nastavte connectionPolicy.PreferredLocations
také oblasti, do kterých se data replikují do seřazených podle předvoleb – ideálně oblasti s nejkratší vzdáleností nebo nejlepší latencí jako první:
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 ve své aplikaci povolit zápisy do více oblastí, nastavte connection_policy.UseMultipleWriteLocations
na true
hodnotu . Nastavte connection_policy.PreferredLocations
také oblasti, do kterých se data replikují do seřazených podle předvoleb – ideálně 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)