Konfigurera skrivningar i flera regioner i dina program som använder Azure Cosmos DB
GÄLLER FÖR: NoSQL
I skrivscenarier för flera regioner kan du få en prestandaförmån genom att bara skriva till regionen nära programinstansen. Azure Cosmos DB hanterar replikeringen åt dig i bakgrunden.
När du har aktiverat ditt konto för flera skrivregioner måste du göra två ändringar i programmet i ConnectionPolicy
. ConnectionPolicy
I anger UseMultipleWriteLocations
true
och skickar du namnet på den region där programmet distribueras till ApplicationRegion
. Den här åtgärden fyller egenskapen PreferredLocations
baserat på geo-närhet från den plats som skickades in. Om en ny region senare läggs till i kontot behöver programmet inte uppdateras eller distribueras om. Den identifierar automatiskt den närmare regionen och auto-homes på den om en regional händelse inträffar.
Kommentar
Azure Cosmos DB-konton som ursprungligen konfigurerats med en enda skrivregion kan konfigureras till flera skrivregioner med noll nedtid. Mer information finns i Konfigurera regioner med flera skrivning.
Azure Portal
Om du vill använda skrivningar i flera regioner aktiverar du ditt Azure Cosmos DB-konto för flera regioner med hjälp av Azure Portal. Ange vilka regioner programmet kan skriva till.
Använd följande steg för att aktivera skrivningar i flera regioner:
Logga in på Azure-portalen.
Gå till ditt Azure Cosmos DB-konto och öppna fönstret Replikera data globalt från menyn.
Under alternativet Skrivningar i flera regioner väljer du Aktivera. De befintliga regionerna läggs automatiskt till i läs- och skrivregioner.
Du kan lägga till fler regioner genom att välja ikonerna på kartan eller genom att välja knappen Lägg till region . Alla regioner som du lägger till har både läs- och skrivåtgärder aktiverade.
När du har uppdaterat regionlistan väljer du Spara för att tillämpa ändringarna.
.NET SDK v2
Om du vill aktivera skrivningar i flera regioner i ditt program anger du UseMultipleWriteLocations
till true
. SetCurrentLocation
Ange också till den region där programmet distribueras och där Azure Cosmos DB replikeras:
ConnectionPolicy policy = new ConnectionPolicy
{
ConnectionMode = ConnectionMode.Direct,
ConnectionProtocol = Protocol.Tcp,
UseMultipleWriteLocations = true
};
policy.SetCurrentLocation("West US 2");
.NET SDK v3
Om du vill aktivera skrivningar i flera regioner i ditt program anger du ApplicationRegion
till den region där programmet distribueras och där Azure Cosmos DB replikeras:
CosmosClient cosmosClient = new CosmosClient(
"<connection-string-from-portal>",
new CosmosClientOptions()
{
ApplicationRegion = Regions.WestUS2,
});
Du kan också använda CosmosClientBuilder
och WithApplicationRegion
för att uppnå samma resultat:
CosmosClientBuilder cosmosClientBuilder = new CosmosClientBuilder("<connection-string-from-portal>")
.WithApplicationRegion(Regions.WestUS2);
CosmosClient client = cosmosClientBuilder.Build();
Java V4 SDK
Om du vill aktivera skrivningar i flera regioner i ditt program anropar .multipleWriteRegionsEnabled(true)
du och .preferredRegions(preferredRegions)
i klientverktyget, där är en List
av de regioner som preferredRegions
data replikeras till ordnade efter önskemål – helst regionerna med kortast avstånd/bästa svarstid först:
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 använde Maven com.microsoft.azure::azure-cosmosdb. Om du vill aktivera skrivningar i flera regioner i ditt program anger policy.setUsingMultipleWriteLocations(true)
du och anger policy.setPreferredLocations
till de List
regioner som data replikeras till ordnade efter inställning – helst de regioner med kortast avstånd/bästa svarstid först:
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();
SDK:er för Node.js, JavaScript och TypeScript
Om du vill aktivera skrivningar i flera regioner i ditt program anger du connectionPolicy.UseMultipleWriteLocations
till true
. connectionPolicy.PreferredLocations
Ange också till de regioner som data replikeras till ordnade efter inställning – helst regionerna med kortast avstånd/bästa svarstid först:
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
Om du vill aktivera skrivningar i flera regioner i ditt program anger du connection_policy.UseMultipleWriteLocations
till true
. connection_policy.PreferredLocations
Ange också till de regioner som data replikeras till ordnade efter inställning – helst regionerna med kortast avstånd/bästa svarstid först.
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)