Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Optimieren Sie die Client-Treiberverbindungen für die serverlose Umgebung
Für die Kommunikation mit Amazon Keyspaces können Sie einen der vorhandenen Apache Cassandra-Client-Treiber Ihrer Wahl verwenden. Da es sich bei Amazon Keyspaces um einen serverlosen Service handelt, empfehlen wir Ihnen, die Verbindungskonfiguration Ihres Client-Treibers für die Durchsatzanforderungen Ihrer Anwendung zu optimieren. In diesem Thema werden bewährte Methoden vorgestellt, darunter die Berechnung, wie viele Verbindungen Ihre Anwendung benötigt, sowie die Überwachung und Fehlerbehandlung von Verbindungen.
Themen
So funktionieren Verbindungen in Amazon Keyspaces
Dieser Abschnitt gibt einen Überblick darüber, wie Client-Treiberverbindungen in Amazon Keyspaces funktionieren. Da eine Fehlkonfiguration des Cassandra-Clienttreibers zu PerConnectionRequestExceeded
Ereignissen in Amazon Keyspaces führen kann, ist die Konfiguration der richtigen Anzahl von Verbindungen in der Client-Treiberkonfiguration erforderlich, um diese und ähnliche Verbindungsfehler zu vermeiden.
Bei der Verbindung mit Amazon Keyspaces benötigt der Treiber einen Seed-Endpunkt, um eine erste Verbindung herzustellen. Amazon Keyspaces verwendetDNS, um die erste Verbindung zu einem der vielen verfügbaren Endpunkte weiterzuleiten. Die Endpunkte sind mit Netzwerk-Loadbalancern verbunden, die wiederum eine Verbindung zu einem der Request-Handler in der Flotte herstellen. Nachdem die erste Verbindung hergestellt wurde, sammelt der Client-Treiber Informationen über alle verfügbaren Endpunkte aus der Tabelle. system.peers
Mit diesen Informationen kann der Client-Treiber zusätzliche Verbindungen zu den aufgelisteten Endpunkten herstellen. Die Anzahl der Verbindungen, die der Clienttreiber herstellen kann, ist durch die Anzahl der lokalen Verbindungen begrenzt, die in den Einstellungen des Clienttreibers angegeben ist. Standardmäßig stellen die meisten Clienttreiber eine Verbindung pro Endpunkt her und richten einen Verbindungspool zu Cassandra ein und verteilen Abfragen über diesen Verbindungspool. Obwohl mehrere Verbindungen zu demselben Endpunkt hergestellt werden können, können sie hinter dem Network Load Balancer mit vielen verschiedenen Request-Handlern verbunden sein. Wenn Sie eine Verbindung über den öffentlichen Endpunkt herstellen, führt der Aufbau einer Verbindung zu jedem der neun in der system.peers
Tabelle aufgeführten Endpunkte zu neun Verbindungen zu unterschiedlichen Request-Handlern.
![Ein Diagramm, das zeigt, wie eine von einem Treiber hergestellte Verbindung zuerst den Endpunkt des Amazon Keyspaces-Service erreicht, dann zu einem Load Balancer weiterleitet und nach der Authentifizierung und Autorisierung die CQL Anfrage die Speicherschicht erreicht.](images/keyspaces_bp-connections.png)
So konfigurieren Sie Verbindungen in Amazon Keyspaces
Amazon Keyspaces unterstützt bis zu 3.000 CQL Abfragen pro TCP Verbindung und Sekunde. Da die Anzahl der Verbindungen, die ein Treiber herstellen kann, unbegrenzt ist, empfehlen wir, nur 500 CQL Anfragen pro Sekunde pro Verbindung anzuvisieren, um Overhead, Traffic-Bursts und einen besseren Lastenausgleich zu berücksichtigen. Gehen Sie wie folgt vor, um sicherzustellen, dass die Treiberverbindung korrekt für die Anforderungen Ihrer Anwendung konfiguriert ist.
Erhöhen Sie die Anzahl der Verbindungen pro IP-Adresse, die Ihr Treiber in seinem Verbindungspool verwaltet.
-
Die meisten Cassandra-Treiber richten einen Verbindungspool zu Cassandra ein und verteilen Abfragen über diesen Verbindungspool. Das Standardverhalten der meisten Treiber besteht darin, eine einzige Verbindung zu jedem Endpunkt herzustellen. Amazon Keyspaces stellt Treibern neun Peer-IP-Adressen zur Verfügung. Basierend auf dem Standardverhalten der meisten Treiber führt dies zu 9 Verbindungen. Amazon Keyspaces unterstützt bis zu 3.000 CQL Abfragen pro TCP Verbindung pro Sekunde. Daher beträgt der maximale CQL Abfragedurchsatz eines Treibers, der die Standardeinstellungen verwendet, 27.000 CQL Abfragen pro Sekunde. Wenn Sie die Standardeinstellungen des Treibers verwenden, muss eine einzelne Verbindung möglicherweise mehr als den maximalen CQL Abfragedurchsatz von 3.000 CQL Abfragen pro Sekunde verarbeiten. Dies kann zu
PerConnectionRequestExceeded
Ereignissen führen. Um
PerConnectionRequestExceeded
Ereignisse zu vermeiden, müssen Sie den Treiber so konfigurieren, dass zusätzliche Verbindungen pro Endpunkt hergestellt werden, um den Durchsatz zu verteilen.Als bewährte Methode in Amazon Keyspaces wird davon ausgegangen, dass jede Verbindung 500 CQL Abfragen pro Sekunde unterstützen kann.
Das bedeutet, dass Sie für eine Produktionsanwendung, die schätzungsweise 27.000 CQL Abfragen pro Sekunde, verteilt auf die neun verfügbaren Endpunkte, unterstützen muss, sechs Verbindungen pro Endpunkt konfigurieren müssen. Dadurch wird sichergestellt, dass jede Verbindung nicht mehr als 500 Anfragen pro Sekunde verarbeitet.
Berechnen Sie die Anzahl der Verbindungen pro IP-Adresse, die Sie für Ihren Treiber konfigurieren müssen, basierend auf den Anforderungen Ihrer Anwendung.
Betrachten Sie das folgende Beispiel, um die Anzahl der Verbindungen zu ermitteln, die Sie pro Endpunkt für Ihre Anwendung konfigurieren müssen. Sie haben eine Anwendung, die 20.000 CQL Abfragen pro Sekunde unterstützen muss, die aus 10.000 INSERT
SELECT
, 5.000 und 5.000 DELETE
Vorgängen bestehen. Die Java-Anwendung wird auf drei Instances auf Amazon Elastic Container Service (AmazonECS) ausgeführt, wobei jede Instance eine einzelne Sitzung mit Amazon Keyspaces einrichtet. Die Berechnung, mit der Sie abschätzen können, wie viele Verbindungen Sie für Ihren Treiber konfigurieren müssen, verwendet die folgende Eingabe.
Die Anzahl der Anfragen pro Sekunde, die Ihre Anwendung unterstützen muss.
Die Anzahl der verfügbaren Instances, wobei eine Instanz abgezogen wird, um Wartungs- oder Ausfallzeiten zu berücksichtigen.
Die Anzahl der verfügbaren Endpunkte. Wenn Sie eine Verbindung über öffentliche Endpunkte herstellen, stehen Ihnen neun Endpunkte zur Verfügung. Wenn Sie VPC Endpunkte verwenden, stehen Ihnen je nach Region zwischen zwei und fünf Endpunkte zur Verfügung.
Verwenden Sie 500 CQL Abfragen pro Sekunde pro Verbindung als bewährte Methode für Amazon Keyspaces.
Runden Sie das Ergebnis zusammen.
In diesem Beispiel sieht die Formel so aus.
20,000 CQL queries / (3 instances - 1 failure) / 9 public endpoints / 500 CQL queries per second = ROUND(2.22) = 3
Basierend auf dieser Berechnung müssen Sie in der Treiberkonfiguration drei lokale Verbindungen pro Endpunkt angeben. Für Remoteverbindungen konfigurieren Sie nur eine Verbindung pro Endpunkt.
So konfigurieren Sie Verbindungen über VPC Endpunkte in Amazon Keyspaces
Wenn Sie eine Verbindung über private VPC Endpunkte herstellen, stehen Ihnen höchstwahrscheinlich 3 Endpunkte zur Verfügung. Die Anzahl der VPC Endpunkte kann je nach Region unterschiedlich sein, basierend auf der Anzahl der Availability Zones und der Anzahl der Subnetze in den zugewiesenen Subnetzen. VPC Die Region USA Ost (Nord-Virginia) hat fünf Availability Zones und Sie können bis zu fünf Amazon Keyspaces-Endpunkte haben. Die Region USA West (Nordkalifornien) hat zwei Availability Zones und Sie können bis zu zwei Amazon Keyspaces-Endpunkte haben. Die Anzahl der Endpunkte hat keinen Einfluss auf die Skalierung, erhöht jedoch die Anzahl der Verbindungen, die Sie in der Treiberkonfiguration einrichten müssen. Betrachten Sie das folgende Beispiel. Ihre Anwendung muss 20.000 CQL Abfragen unterstützen und läuft auf drei Instances auf Amazon, ECS wobei jede Instance eine einzelne Sitzung mit Amazon Keyspaces einrichtet. Der einzige Unterschied besteht darin, wie viele Endpunkte in den verschiedenen verfügbar sind. AWS-Regionen
In der Region USA Ost (Nord-Virginia) sind Verbindungen erforderlich:
20,000 CQL queries / (3 instances - 1 failure) / 5 private VPC endpoints / 500 CQL queries per second = 4 local connections
In der Region USA West (Nordkalifornien) sind Verbindungen erforderlich:
20,000 CQL queries / (3 instances - 1 failure) / 2 private VPC endpoints / 500 CQL queries per second = 10 local connections
Wichtig
Bei der Verwendung von privaten VPC Endpunkten sind zusätzliche Berechtigungen erforderlich, damit Amazon Keyspaces die verfügbaren VPC Endpunkte dynamisch ermitteln und die Tabelle auffüllen kann. system.peers
Weitere Informationen finden Sie unter Auffüllen von system.peers Tabelleneinträgen mit VPC-Endpunktinformationen der Schnittstelle.
Wenn Sie über einen privaten VPC Endpunkt mit einem anderen auf Amazon Keyspaces zugreifen AWS-Konto, ist es wahrscheinlich, dass Sie nur einen einzigen Amazon Keyspaces-Endpunkt sehen. Auch dies hat keinen Einfluss auf den Umfang des möglichen Durchsatzes zu Amazon Keyspaces, aber es kann erforderlich sein, dass Sie die Anzahl der Verbindungen in Ihrer Treiberkonfiguration erhöhen. Dieses Beispiel zeigt dieselbe Berechnung für einen einzelnen verfügbaren Endpunkt.
20,000 CQL queries / (3 instances - 1 failure) / 1 private VPC endpoints / 500 CQL queries per second = 20 local connections
Weitere Informationen zum kontoübergreifenden Zugriff auf Amazon Keyspaces mithilfe eines geteilten VPC Kontos finden Sie unter. Konfigurieren Sie den kontoübergreifenden Zugriff mithilfe von VPC-Endpunkten in einer gemeinsam genutzten VPC
So überwachen Sie Verbindungen in Amazon Keyspaces
Um die Anzahl der Endpunkte zu ermitteln, mit denen Ihre Anwendung verbunden ist, können Sie die Anzahl der erkannten Peers in der system.peers
Tabelle protokollieren. Das folgende Beispiel ist ein Beispiel für Java-Code, der die Anzahl der Peers ausgibt, nachdem die Verbindung hergestellt wurde.
ResultSet result = session.execute(new SimpleStatement("SELECT * FROM system.peers")); logger.info("number of Amazon Keyspaces endpoints:" + result.all().stream().count());
Anmerkung
Die CQL Konsole oder die AWS Konsole werden nicht in einem bereitgestellt VPC und verwenden daher den öffentlichen Endpunkt. Wenn die system.peers
Abfrage von Anwendungen aus ausgeführt wird, die sich außerhalb von befinden, ergeben sich daher VPCE häufig 9 Peers. Es kann auch hilfreich sein, die IP-Adressen der einzelnen Peers auszudrucken.
Sie können auch die Anzahl der Peers beobachten, wenn Sie einen VPC Endpunkt verwenden, indem Sie VPCE CloudWatch Amazon-Metriken einrichten. In CloudWatch können Sie die Anzahl der Verbindungen sehen, die zum VPC Endpunkt hergestellt wurden. Die Cassandra-Treiber stellen für jeden Endpunkt eine Verbindung her, um CQL Abfragen zu senden, und eine Kontrollverbindung, um Systemtabelleninformationen zu sammeln. Das Bild unten zeigt die VPC CloudWatch Endpunktmetriken nach dem Herstellen einer Verbindung zu Amazon Keyspaces mit einer in den Treibereinstellungen konfigurierten Verbindung. Die Metrik zeigt sechs aktive Verbindungen, bestehend aus einer Kontrollverbindung und fünf Verbindungen (eine pro Endpunkt in allen Availability Zones).
![Ein Screenshot, der Metriken auf einem Cloudwatch-Dashboard für Verbindungen zeigt, die über einen VPC Endpunkt laufen. Die verwendeten Metriken sind ActiveConnections und BytesProcessed.](images/keyspaces_bp_cw.png)
Um mit der Überwachung der Anzahl der Verbindungen mithilfe eines CloudWatch Diagramms zu beginnen, können Sie diese AWS CloudFormation Vorlage bereitstellen, die GitHub im Amazon Keyspaces-Vorlagen-Repository
So behandeln Sie Verbindungsfehler in Amazon Keyspaces
Wenn das Kontingent von 3.000 Anfragen pro Verbindung überschritten wird, gibt Amazon Keyspaces ein PerConnectionRequestExceeded
Ereignis zurück und der Cassandra-Treiber erhält eine WriteTimeout
ReadTimeout
OR-Ausnahme. Sie sollten diese Ausnahme mit exponentiellem Backoff in Ihrer Cassandra-Wiederholungsrichtlinie oder in Ihrer Anwendung erneut versuchen. Sie sollten einen exponentiellen Backoff angeben, um zu vermeiden, dass zusätzliche Anfragen gesendet werden.
Die standardmäßige Wiederholungsrichtlinie versucht, dies try next host
im Abfrageplan zu tun. Da Amazon Keyspaces beim Herstellen einer Verbindung mit dem Endpunkt über ein bis drei verfügbare VPC Endpunkte verfügen kann, werden NoHostAvailableException
in Ihren Anwendungsprotokollen möglicherweise auch die ReadTimeout
Ausnahmen zusätzlich zu den WriteTimeout
und angezeigt. Sie können die von Amazon Keyspaces bereitgestellten Wiederholungsrichtlinien verwenden, die es auf demselben Endpunkt, aber über verschiedene Verbindungen hinweg wiederholen.
Beispiele für exponentielle Wiederholungsrichtlinien für Java finden Sie GitHub im Amazon Keyspaces-Repository für Java-Codebeispiele