Schritt 6: (Optional) Bewährte Methoden zur Konfiguration der Größe des Verbindungspools für Ihre Anwendung - Amazon Keyspaces (für Apache Cassandra)

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.

Schritt 6: (Optional) Bewährte Methoden zur Konfiguration der Größe des Verbindungspools für Ihre Anwendung

In diesem Abschnitt wird beschrieben, wie Sie die ideale Größe des Verbindungspools anhand der Anforderungen an den Abfragedurchsatz Ihrer Anwendung ermitteln können.

Amazon Keyspaces erlaubt maximal 3.000 CQL-Abfragen pro Sekunde pro TCP-Verbindung. Die Anzahl der Verbindungen, die ein Treiber mit Amazon Keyspaces herstellen kann, ist also praktisch unbegrenzt. Wir empfehlen Ihnen jedoch, die Größe des Verbindungspools an die Anforderungen Ihrer Anwendung anzupassen und die verfügbaren Endpunkte zu berücksichtigen, wenn Sie Amazon Keyspaces mit VPC-Endpunktverbindungen verwenden.

Sie konfigurieren die Größe des Verbindungspools im Client-Treiber. Basierend auf einer lokalen Poolgröße von 2 und einem VPC-Schnittstellenendpunkt, der über 3 Availability Zones erstellt wurde, richtet der Treiber beispielsweise 6 Verbindungen für Abfragen ein (insgesamt 7, einschließlich einer Kontrollverbindung). Mit diesen 6 Verbindungen können Sie maximal 18.000 CQL-Abfragen pro Sekunde unterstützen.

Wenn Ihre Anwendung 40.000 CQL-Abfragen pro Sekunde unterstützen muss, gehen Sie von der Anzahl der Abfragen aus, die erforderlich sind, um die erforderliche Größe des Verbindungspools zu ermitteln. Um 40.000 CQL-Abfragen pro Sekunde zu unterstützen, müssen Sie die Größe des lokalen Pools auf mindestens 5 konfigurieren, was mindestens 45.000 CQL-Abfragen pro Sekunde unterstützt.

Mithilfe der PerConnectionRequestRateExceeded CloudWatch Metrik im Namespace können Sie überwachen, ob Sie das Kontingent für die maximale Anzahl von Vorgängen pro Sekunde und Verbindung überschreiten. AWS/Cassandra Die PerConnectionRequestRateExceeded Metrik zeigt die Anzahl der Anfragen an Amazon Keyspaces, die das Kontingent für die Anforderungsrate pro Verbindung überschreiten.

Die Codebeispiele in diesem Schritt zeigen, wie Sie das Verbindungspooling schätzen und konfigurieren, wenn Sie VPC-Endpunkte mit Schnittstellen verwenden.

Java

Sie können die Anzahl der Verbindungen pro Pool im Java-Treiber konfigurieren. Ein vollständiges Beispiel für eine Verbindung mit einem Java-Clienttreiber finden Sie unterVerwenden eines Cassandra-Java-Client-Treibers für den programmgesteuerten Zugriff auf Amazon Keyspaces.

Wenn der Client-Treiber gestartet wird, wird zunächst die Steuerverbindung für Verwaltungsaufgaben hergestellt, z. B. für Schema- und Topologieänderungen. Dann werden die zusätzlichen Verbindungen erstellt.

Im folgenden Beispiel ist die Treiberkonfiguration für die Größe des lokalen Pools mit 2 angegeben. Wenn der VPC-Endpunkt über 3 Subnetze innerhalb der VPC erstellt wird, ergibt dies 7 NewConnections in CloudWatch für den Schnittstellenendpunkt, wie in der folgenden Formel dargestellt.

NewConnections = 3 (VPC subnet endpoints created across) * 2 (pool size) + 1 ( control connection)
datastax-java-driver { basic.contact-points = [ "cassandra.us-east-1.amazonaws.com:9142"] advanced.auth-provider{ class = PlainTextAuthProvider username = "ServiceUserName" password = "ServicePassword" } basic.load-balancing-policy { local-datacenter = "us-east-1" slow-replica-avoidance = false } advanced.ssl-engine-factory { class = DefaultSslEngineFactory truststore-path = "./src/main/resources/cassandra_truststore.jks" truststore-password = "my_password" hostname-validation = false } advanced.connection { pool.local.size = 2 } }

Wenn die Anzahl der aktiven Verbindungen nicht Ihrer konfigurierten Poolgröße (Aggregation über Subnetze) +1 Kontrollverbindung entspricht, verhindert etwas, dass die Verbindungen erstellt werden.

Node.js

Sie können die Anzahl der Verbindungen pro Pool im Treiber Node.js konfigurieren. Ein vollständiges Beispiel für eine Clienttreiberverbindung vom Typ Node.js finden Sie unterVerwenden eines Cassandra Node.js Client-Treibers für den programmgesteuerten Zugriff auf Amazon Keyspaces.

Im folgenden Codebeispiel ist die Treiberkonfiguration für die Größe des lokalen Pools als 1 angegeben. Wenn der VPC-Endpunkt über 4 Subnetze innerhalb der VPC erstellt wird, ergibt dies 5 NewConnections in CloudWatch für den Schnittstellenendpunkt, wie in der folgenden Formel dargestellt.

NewConnections = 4 (VPC subnet endpoints created across) * 1 (pool size) + 1 ( control connection)
const cassandra = require('cassandra-driver'); const fs = require('fs'); const types = cassandra.types; const auth = new cassandra.auth.PlainTextAuthProvider('ServiceUserName', 'ServicePassword'); const sslOptions1 = { ca: [ fs.readFileSync('/home/ec2-user/sf-class2-root.crt', 'utf-8')], host: 'cassandra.us-east-1.amazonaws.com', rejectUnauthorized: true }; const client = new cassandra.Client({ contactPoints: ['cassandra.us-east-1.amazonaws.com'], localDataCenter: 'us-east-1', pooling: { coreConnectionsPerHost: { [types.distance.local]: 1 } }, consistency: types.consistencies.localQuorum, queryOptions: { isIdempotent: true }, authProvider: auth, sslOptions: sslOptions1, protocolOptions: { port: 9142 } });