Condividi tramite


Estensione driver di Azure Cosmos DB for Apache Cassandra

SI APPLICA A: Cassandra

Azure Cosmos DB offre un'estensione driver per DataStax Java Driver 3 e 4. Queste estensioni del driver offrono agli sviluppatori funzionalità diverse per migliorare le prestazioni e l'affidabilità di un'applicazione e ottimizzare i carichi di lavoro in Azure Cosmos DB.

In questo articolo verrà dedicata particolare attenzione a Java versione 4 di DataStax Java Driver. L'estensione creata può essere implementata senza modifiche al codice, ma con un aggiornamento ai file pom.xml e application.conf. In questo articolo sono illustrati i valori predefiniti per tutte le opzioni di configurazione impostate dalle estensioni di Azure Cosmos DB for Apache Cassandra e i casi in cui è possibile eseguirne l'override.

Le impostazioni seguenti sono specifiche per Java versione 4 del driver client Cassandra.

Autenticazione

Per impostazione predefinita, viene usato il parametro PlainTextAuthProvider. Questo perché Azure Cosmos DB for Apache Cassandra richiede l'autenticazione e usa l'autenticazione in testo normale.

    auth-provider { 
      class = PlainTextAuthProvider 
    } 

Connessione

Azure Cosmos DB bilancia il carico delle richieste rispetto a un numero elevato di nodi back-end. Le impostazioni predefinite nell'estensione per le dimensioni dei nodi locali e remoti sono adatte agli ambienti di sviluppo, di test e di produzione o gestione temporanea con volumi ridotti. Negli ambienti con volumi elevati è consigliabile aumentare questi valori a 50 o 100.

    connection { 
      pool { 
        local { 
          size = 10 
        } 
        remote { 
          size = 10 
        } 
      } 
    } 

Mappa dei token

La mappa dei token di sessione viene usata internamente dal driver per inviare richieste al coordinatore ottimale quando è abilitato il routing compatibile con token. Questa mappa è un'ottimizzazione efficace quando si è connessi a un'istanza di Apache Cassandra. È invece irrilevante e genera messaggi di errore spuri quando si è connessi a un endpoint di Azure Cosmos DB for Apache Cassandra. È quindi consigliabile disabilitare la mappa dei token di sessione quando si è connessi a un'istanza di Azure Cosmos DB for Apache Cassandra.

    metadata { 
      token-map { 
        enabled = false 
      } 
    } 

Criteri di riconnessione

È consigliabile usare il parametro ConstantReconnectionPolicy per l'API per Cassandra, con un base-delay di 2 secondi.

    reconnection-policy { 
      class = ConstantReconnectionPolicy 
      base-delay = 2 second 
    } 

Criteri di ripetizione

I criteri di ripetizione dei tentativi predefiniti nel driver Java non gestiscono l'eccezione OverLoadedException. Per l'API per Cassandra sono stati creati criteri personalizzati in grado di gestire questa eccezione.
I parametri per i criteri di ripetizione dei tentativi sono definiti all'interno del file reference.conf dell'estensione di Azure Cosmos DB.

    retry-policy { 
      class = com.azure.cosmos.cassandra.CosmosRetryPolicy 
      max-retries = 5               
      fixed-backoff-time = 5000     
      growing-backoff-time = 1000   
    } 

Criteri di bilanciamento e aree preferite

I criteri di bilanciamento del carico predefiniti nel driver v4 limitano il failover a livello di applicazione e specificano un singolo data center locale per CqlSession, l'oggetto richiesto dai criteri. Questa caratteristica offre un'esperienza ottimale per le comunicazioni con le istanze di Azure Cosmos DB for Apache Cassandra. Oltre a impostare i criteri di bilanciamento del carico, è possibile configurare il failover nelle aree specificate in una distribuzione di scritture in più aree, se si verificano interruzioni a livello di area usando il parametro preferred-regions.

    load-balancing-policy {
        multi-region-writes=false 
        preferred-regions=["Australia East","UK West"] 
} 

Connessione SSL e timeout

Per impostazione predefinita, viene usato il parametro DefaultsslEngineFactory. Ciò è dovuto al fatto che l'API Azure Cosmos DB for Apache Cassandra richiede una connessione SSL:

    ssl-engine-factory { 
        class = DefaultSslEngineFactory 
    } 

Un timeout della richiesta di 60 secondi offre un'esperienza migliore rispetto al valore predefinito di 2 secondi. Aumentare o diminuire questo valore in base al carico di lavoro e al provisioning della velocità effettiva di Azure Cosmos DB for Apache Cassandra. Maggiore è la velocità effettiva di cui viene effettuato il provisioning, più basso può essere il valore da impostare.

    request { 
      timeout = "60 seconds" 
    } 

Passaggi successivi