Connessioni del driver client ad Amazon Keyspaces (per Apache Cassandra) - Amazon Keyspaces (per Apache Cassandra)

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Connessioni del driver client ad Amazon Keyspaces (per Apache Cassandra)

Per comunicare con Amazon Keyspaces, puoi utilizzare uno qualsiasi dei driver client Apache Cassandra esistenti di tua scelta. Poiché Amazon Keyspaces è un servizio serverless, ti consigliamo di ottimizzare la configurazione della connessione del driver client per le esigenze di throughput della tua applicazione. Questo argomento introduce le migliori pratiche, tra cui il calcolo del numero di connessioni richieste dall'applicazione, nonché il monitoraggio e la gestione degli errori delle connessioni.

Come funzionano le connessioni in Amazon Keyspaces

Questa sezione offre una panoramica di come funzionano le connessioni dei driver client in Amazon Keyspaces. Poiché una configurazione errata del driver client Cassandra può causare PerConnectionRequestExceeded eventi in Amazon Keyspaces, è necessario configurare la giusta quantità di connessioni nella configurazione del driver client per evitare questi e altri errori di connessione simili.

Quando ci si connette ad Amazon Keyspaces, il driver richiede un endpoint seed per stabilire una connessione iniziale. Amazon Keyspaces utilizza DNS per instradare la connessione iniziale verso uno dei tanti endpoint disponibili. Gli endpoint sono collegati a sistemi di bilanciamento del carico di rete che a loro volta stabiliscono una connessione a uno dei gestori di richieste del parco macchine. Dopo aver stabilito la connessione iniziale, il driver client raccoglie informazioni su tutti gli endpoint disponibili dalla tabella. system.peers Con queste informazioni, il driver client può creare connessioni aggiuntive agli endpoint elencati. Il numero di connessioni che il driver client può creare è limitato dal numero di connessioni locali specificate nelle impostazioni del driver client. Per impostazione predefinita, la maggior parte dei driver client stabilisce una connessione per endpoint e stabilisce un pool di connessioni con Cassandra e bilancia il carico delle query su quel pool di connessioni. Sebbene sia possibile stabilire più connessioni allo stesso endpoint, tramite il sistema di bilanciamento del carico di rete queste possono essere connesse a molti gestori di richieste diversi. Quando ci si connette tramite l'endpoint pubblico, stabilendo una connessione a ciascuno dei nove endpoint elencati nella system.peers tabella si ottengono nove connessioni a diversi gestori di richieste.

Un diagramma che mostra come una connessione stabilita da un driver raggiunge prima l'endpoint del servizio Amazon Keyspaces, quindi continua verso un sistema di bilanciamento del carico e, dopo l'autenticazione e l'autorizzazione, la richiesta CQL raggiunge il livello di storage.

Come configurare le connessioni in Amazon Keyspaces

Amazon Keyspaces supporta fino a 3.000 query CQL per connessione TCP al secondo. Poiché non esiste un limite al numero di connessioni che un driver può stabilire, consigliamo di utilizzare come target solo 500 richieste CQL al secondo per connessione per evitare sovraccarichi, picchi di traffico e un migliore bilanciamento del carico. Segui questi passaggi per assicurarti che la connessione del driver sia configurata correttamente per le esigenze dell'applicazione.

Aumenta il numero di connessioni per indirizzo IP che il driver mantiene nel suo pool di connessioni.

  • La maggior parte dei driver Cassandra stabilisce un pool di connessioni con Cassandra e bilancia il carico delle query su quel pool di connessioni. Il comportamento predefinito della maggior parte dei driver consiste nello stabilire una singola connessione a ciascun endpoint. Amazon Keyspaces espone nove indirizzi IP peer ai driver, quindi, in base al comportamento predefinito della maggior parte dei driver, si ottengono 9 connessioni. Amazon Keyspaces supporta fino a 3.000 query CQL per connessione TCP al secondo, pertanto il throughput massimo di query CQL di un driver che utilizza le impostazioni predefinite è di 27.000 query CQL al secondo. Se utilizzi le impostazioni predefinite del driver, una singola connessione potrebbe dover elaborare più del throughput massimo di query CQL di 3.000 query CQL al secondo. Ciò potrebbe causare eventi. PerConnectionRequestExceeded

  • Per evitare PerConnectionRequestExceeded eventi, è necessario configurare il driver in modo da creare connessioni aggiuntive per endpoint per distribuire il throughput.

  • Come best practice in Amazon Keyspaces, supponiamo che ogni connessione possa supportare 500 query CQL al secondo.

  • Ciò significa che per un'applicazione di produzione che deve supportare circa 27.000 query CQL al secondo distribuite sui nove endpoint disponibili, è necessario configurare sei connessioni per endpoint. Ciò garantisce che ogni connessione elabori non più di 500 richieste al secondo.

Calcola il numero di connessioni per indirizzo IP che devi configurare per il tuo driver in base alle esigenze dell'applicazione.

Per determinare il numero di connessioni da configurare per endpoint per l'applicazione, considera l'esempio seguente. Hai un'applicazione che deve supportare 20.000 query CQL al secondo costituite da 10.000 INSERTSELECT, 5.000 e 5.000 operazioni. DELETE L'applicazione Java è in esecuzione su tre istanze su Amazon Elastic Container Service (Amazon ECS), dove ogni istanza stabilisce una singola sessione su Amazon Keyspaces. Il calcolo che puoi utilizzare per stimare quante connessioni devi configurare per il tuo driver utilizza il seguente input.

  1. Il numero di richieste al secondo che l'applicazione deve supportare.

  2. Il numero di istanze disponibili a cui viene sottratta una per tenere conto della manutenzione o dell'errore.

  3. Il numero di endpoint disponibili. Se ti connetti tramite endpoint pubblici, hai nove endpoint disponibili. Se utilizzi endpoint VPC, hai da due a cinque endpoint disponibili, a seconda della regione.

  4. Utilizza 500 query CQL al secondo per connessione come best practice per Amazon Keyspaces.

  5. Arrotonda il risultato.

In questo esempio, la formula ha il seguente aspetto.

20,000 CQL queries / (3 instances - 1 failure) / 9 public endpoints / 500 CQL queries per second = ROUND(2.22) = 3

In base a questo calcolo, è necessario specificare tre connessioni locali per endpoint nella configurazione del driver. Per le connessioni remote, configura solo una connessione per endpoint.

Come configurare le connessioni tramite endpoint VPC in Amazon Keyspaces

Quando ti connetti tramite endpoint VPC privati, molto probabilmente hai 3 endpoint disponibili. Il numero di endpoint VPC può variare per regione, in base al numero di zone di disponibilità e al numero di sottoreti nel VPC assegnato. La regione Stati Uniti orientali (Virginia settentrionale) ha cinque zone di disponibilità e puoi avere fino a cinque endpoint Amazon Keyspaces. La regione Stati Uniti occidentali (California settentrionale) ha due zone di disponibilità e puoi avere fino a due endpoint Amazon Keyspaces. Il numero di endpoint non influisce sulla scalabilità, ma aumenta il numero di connessioni da stabilire nella configurazione del driver. Analizza l'esempio seguente. La tua applicazione deve supportare 20.000 query CQL ed è in esecuzione su tre istanze su Amazon ECS, dove ogni istanza stabilisce una singola sessione su Amazon Keyspaces. L'unica differenza è il numero di endpoint disponibili nei diversi sistemi. Regioni AWS

Connessioni richieste nella regione Stati Uniti orientali (Virginia settentrionale):

20,000 CQL queries / (3 instances - 1 failure) / 5 private VPC endpoints / 500 CQL queries per second = 4 local connections

Connessioni richieste nella regione Stati Uniti occidentali (California settentrionale):

20,000 CQL queries / (3 instances - 1 failure) / 2 private VPC endpoints / 500 CQL queries per second = 10 local connections
Importante

Quando si utilizzano endpoint VPC privati, sono necessarie autorizzazioni aggiuntive per Amazon Keyspaces per rilevare dinamicamente gli endpoint VPC disponibili e popolare la tabella. system.peers Per ulteriori informazioni, consulta Inserimento delle voci della system.peers tabella con informazioni sugli endpoint VPC dell'interfaccia.

Quando si accede ad Amazon Keyspaces tramite un endpoint VPC privato utilizzando un altro Account AWS, è probabile che venga visualizzato un solo endpoint Amazon Keyspaces. Anche in questo caso ciò non influisce sulla portata del throughput possibile verso Amazon Keyspaces, ma potrebbe richiedere un aumento del numero di connessioni nella configurazione del driver. Questo esempio mostra lo stesso calcolo per un singolo endpoint disponibile.

20,000 CQL queries / (3 instances - 1 failure) / 1 private VPC endpoints / 500 CQL queries per second = 20 local connections

Per ulteriori informazioni sull'accesso tra account ad Amazon Keyspaces utilizzando un VPC condiviso, consulta. Configurazione dell'accesso multiaccount per Amazon Keyspaces in un VPC condiviso

Come monitorare le connessioni in Amazon Keyspaces

Per identificare il numero di endpoint a cui è connessa l'applicazione, è possibile registrare il numero di peer rilevati nella system.peers tabella. L'esempio seguente è un esempio di codice Java che stampa il numero di peer dopo che la connessione è stata stabilita.

ResultSet result = session.execute(new SimpleStatement("SELECT * FROM system.peers")); logger.info("number of Amazon Keyspaces endpoints:" + result.all().stream().count());
Nota

La console o AWS la console CQL non sono distribuite all'interno di un VPC e quindi utilizzano l'endpoint pubblico. Di conseguenza, l'esecuzione della system.peers query da applicazioni situate all'esterno del VPCE spesso dà come risultato 9 peer. Può anche essere utile stampare gli indirizzi IP di ciascun peer.

Puoi anche osservare il numero di peer quando usi un endpoint VPC configurando i parametri di Amazon VPCE. CloudWatch In CloudWatch, puoi vedere il numero di connessioni stabilite all'endpoint VPC. I driver Cassandra stabiliscono una connessione per ciascun endpoint per inviare query CQL e una connessione di controllo per raccogliere informazioni sulla tabella di sistema. L'immagine seguente mostra i CloudWatch parametri degli endpoint VPC dopo la connessione ad Amazon Keyspaces con 1 connessione configurata nelle impostazioni del driver. La metrica mostra sei connessioni attive costituite da una connessione di controllo e cinque connessioni (1 per endpoint nelle zone di disponibilità).

Una schermata che mostra le metriche su una dashboard di Cloudwatch per le connessioni che passano attraverso un endpoint VPC. Le metriche utilizzate sono e. ActiveConnections BytesProcessed

Per iniziare a monitorare il numero di connessioni utilizzando un CloudWatch grafico, puoi distribuire questo AWS CloudFormation modello disponibile GitHub nell'archivio dei modelli di Amazon Keyspaces.

Come gestire gli errori di connessione in Amazon Keyspaces

Quando si supera la quota di 3.000 richieste per connessione, Amazon Keyspaces restituisce un PerConnectionRequestExceeded evento e il driver Cassandra riceve un'eccezione or. WriteTimeout ReadTimeout Dovresti riprovare questa eccezione con un backoff esponenziale nella tua politica sui tentativi di riprova di Cassandra o nella tua applicazione. È necessario fornire un backoff esponenziale per evitare di inviare richieste aggiuntive.

La politica di riprova predefinita tenta di accedere al piano di try next host interrogazione. Poiché Amazon Keyspaces può avere da uno a tre endpoint disponibili durante la connessione all'endpoint VPC, è possibile che NoHostAvailableException nei log delle applicazioni vengano visualizzate anche le eccezioni aggiuntive WriteTimeout e ReadTimeout le eccezioni. Puoi utilizzare le politiche di riprova fornite da Amazon Keyspaces, che riprovano sullo stesso endpoint ma su connessioni diverse.

Puoi trovare esempi di politiche di ripetizione esponenziale per Java nel repository di esempi di codice GitHub Java di Amazon Keyspaces. Puoi trovare esempi di linguaggio aggiuntivi su Github nel repository degli esempi di codice di Amazon Keyspaces.