Condividi tramite


Come configurare la cache integrata di Azure Cosmos DB

SI APPLICA A: NoSQL

Questo articolo descrive come effettuare il provisioning di un gateway dedicato, configurare la cache integrata e connettere l'applicazione.

Prerequisiti

Effettuare il provisioning del gateway dedicato

  1. Passare a un account Azure Cosmos DB nel portale di Azure e selezionare la scheda Gateway dedicato.

    Screenshot della portale di Azure che mostra come passare alla scheda Gateway dedicato di Azure Cosmos DB.

  2. Compilare il modulo Gateway dedicato con i dettagli seguenti:

    • Gateway dedicato: impostare l'interruttore su Sottoposto a provisioning.
    • SKU: selezionare uno SKU con le dimensioni di calcolo e memoria necessarie. La cache integrata userà circa il 50% della memoria e la memoria rimanente viene usata per i metadati e le richieste di routing alle partizioni back-end.
    • Numero di istanze: numero di nodi. A scopo di sviluppo, è consigliabile iniziare con un nodo con dimensioni D4. In base alla quantità di dati che è necessario memorizzare nella cache e per ottenere una disponibilità elevata, è possibile aumentare le dimensioni del nodo dopo il test iniziale.

    Screenshot della scheda portale di Azure gateway dedicato che mostra le impostazioni di input di esempio per la creazione di un cluster gateway dedicato.

  3. Selezionare Salva e attendere circa 5-10 minuti per il completamento del provisioning del gateway dedicato. Al termine del provisioning, verrà visualizzata la notifica seguente:

    Screenshot di una notifica nel portale di Azure che mostra come verificare se il provisioning del gateway dedicato è stato completato.

Configurare l'applicazione per l'uso della cache integrata

Quando si effettua il provisioning di un gateway dedicato, viene creata automaticamente una cache integrata. Non è necessario connettere tutte le applicazioni usando Azure Cosmos DB al gateway dedicato se non è necessario usare la cache integrata. L'aggiunta di un gateway dedicato non influisce sulle modalità esistenti di connessione ad Azure Cosmos DB. Ad esempio, si potrebbe avere una connessione CosmosClient mediante la modalità gateway e l'endpoint del gateway dedicato, mentre un'altra connessione CosmosClient usa la modalità diretta.

Eseguire l'autenticazione con il controllo degli accessi in base al ruolo

Il gateway dedicato usa le stesse autorizzazioni, definizioni di ruolo e assegnazioni di ruolo di Azure Cosmos DB. Se il controllo degli accessi in base al ruolo è già configurato per le operazioni del piano dati nell'account Azure Cosmos DB, è anche possibile usarlo per l'autenticazione nel gateway dedicato. Informazioni sul controllo degli accessi in base al ruolo per le operazioni del piano dati di Azure Cosmos DB.

CosmosClient Configurare l'utente impostando l'endpoint gateway dedicato, le credenziali e configurando la modalità di connettività del gateway. Tutti gli endpoint gateway dedicati seguono lo stesso modello. Rimuovere documents.azure.com dall'endpoint originale e sostituirlo con sqlx.cosmos.azure.com. Un gateway dedicato avrà sempre lo stesso endpoint, anche se viene rimosso e eseguito nuovamente il provisioning.

using Azure.Core;
using Azure.Identity;
using Microsoft.Azure.Cosmos;

string endpoint = "<dedicated-gateway-endpoint>";

TokenCredential credential = new DefaultAzureCredential();

CosmosClient client = new(endpoint, credential, new CosmosClientOptions { ConnectionMode = ConnectionMode.Gateway });

Importante

La modalità di connettività diretta è l'impostazione predefinita in .NET SDK. È necessario configurare in modo esplicito la modalità gateway per l'uso del gateway dedicato.

Eseguire l'autenticazione con stringa di connessione

  1. Modificare la stringa di connessione dell'applicazione per usare il nuovo endpoint del gateway dedicato.

    La stringa di connessione del gateway dedicato aggiornata si trova nel pannello Chiavi:

    Screenshot della scheda chiavi portale di Azure con il gateway dedicato stringa di connessione.

    Tutte le stringhe di connessione del gateway dedicato usano lo stesso modello. Rimuovere documents.azure.com dalla stringa di connessione originale e sostituirla con sqlx.cosmos.azure.com. Un gateway dedicato avrà sempre la stessa stringa di connessione, anche se la si rimuove e si esegue nuovamente il provisioning.

  2. Se si usa .NET SDK o Java SDK, impostare la modalità di connessione sulla modalità gateway. Questo passaggio non è necessario per gli SDK Python e Node.js perché non hanno opzioni aggiuntive per la connessione oltre alla modalità gateway.

Importante

Se si usa la versione più recente di .NET SDK o Java SDK, la modalità di connessione predefinita è la modalità diretta. Per usare la cache integrata, è necessario eseguire l'override di questa impostazione predefinita.

Regolare la coerenza delle richieste

È necessario assicurarsi che la coerenza della richiesta sia di tipo sessione o finale. In caso contrario, la richiesta ignora sempre la cache integrata. Il modo più semplice per configurare una coerenza specifica per tutte le operazioni di lettura prevede la sua impostazione a livello di account. È anche possibile configurare la coerenza a livello di richiesta. Questa impostazione è consigliata se si vuole usare solo un subset delle letture per usare la cache integrata.

Adjust MaxIntegratedCacheStaleness

Configurare MaxIntegratedCacheStaleness, ovvero il tempo massimo di tolleranza di dati non aggiornati memorizzati nella cache. È consigliabile impostare il parametro MaxIntegratedCacheStaleness sul valore più alto possibile perché così facendo si aumenta la probabilità che le letture di punti ripetuti e le query possano corrispondere a riscontri nella cache. Se si imposta MaxIntegratedCacheStaleness su 0, la richiesta di lettura non userà mai la cache integrata, indipendentemente dal livello di coerenza. Se non configurato, il valore predefinito di MaxIntegratedCacheStaleness è 5 minuti.

Nota

Il parametro MaxIntegratedCacheStaleness può essere impostato su un valore massimo pari a 10 anni. In pratica, questo valore corrisponde al decadimento massimo e la cache può essere reimpostata prima a causa degli eventuali riavvii del nodo.

La modifica di MaxIntegratedCacheStaleness è supportata nelle versioni seguenti di ogni SDK:

SDK Versioni supportate
.NET SDK v3 >= 3.30.0
Java SDK v4 >= 4.34.0
Node.js SDK >=3.17.0
Python SDK >=4.3.1
FeedIterator<MyClass> myQuery = container.GetItemQueryIterator<MyClass>(new QueryDefinition("SELECT * FROM c"), requestOptions: new QueryRequestOptions
        {
            DedicatedGatewayRequestOptions = new DedicatedGatewayRequestOptions 
            { 
                MaxIntegratedCacheStaleness = TimeSpan.FromMinutes(30) 
            }
        }
);

Ignorare la cache integrata

Usare l'opzione di richiesta BypassIntegratedCache per controllare quali richieste usano la cache integrata. Le operazioni di scrittura, lettura di punti e query che ignorano la cache integrata non useranno l'archiviazione cache, risparmiando in questo modo spazio per altri elementi. Le richieste che ignorano la cache vengono comunque instradate tramite il gateway dedicato. Queste richieste vengono gestite dal back-end e dalle UR di costo.

Il bypass della cache è supportato nelle versioni seguenti di ogni SDK:

SDK Versioni supportate
.NET SDK v3 >= 3.39.0
Java SDK v4 >= 4.49.0
Node.js SDK >= 4.1.0
Python SDK Non supportato
FeedIterator<MyClass> myQuery = container.GetItemQueryIterator<MyClass>(new QueryDefinition("SELECT * FROM c"), requestOptions: new QueryRequestOptions
        {
            DedicatedGatewayRequestOptions = new DedicatedGatewayRequestOptions 
            { 
                BypassIntegratedCache = true
            }
        }
);

Verificare i riscontri nella cache

Infine, è possibile riavviare l'applicazione e verificare i riscontri nella cache integrata per le letture ripetute dei punti o le query visualizzando se l'addebito della richiesta è 0. Dopo aver modificato CosmosClient per usare l'endpoint del gateway dedicato, tutte le richieste verranno instradate tramite il gateway dedicato.

Affinché una richiesta di lettura (lettura di punti o query) utilizzi la cache integrata, tutti i criteri seguenti devono essere true:

  • Il client si connette all'endpoint del gateway dedicato
  • Il client usa la modalità gateway (Python SDK e Node.js SDK usano sempre la modalità gateway)
  • La coerenza per la richiesta deve essere impostata su Sessione o Finale

Nota

Si desidera lasciare un feedback sulla cache integrata? Saremo lieti di riceverlo. È possibile condividere i feedback direttamente con il team di progettazione di Azure Cosmos DB: cosmoscachefeedback@microsoft.com

Passaggi successivi