Étape 6 : (Facultatif) Meilleures pratiques pour configurer la taille du pool de connexions pour votre application - Amazon Keyspaces (pour Apache Cassandra)

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Étape 6 : (Facultatif) Meilleures pratiques pour configurer la taille du pool de connexions pour votre application

Dans cette section, nous expliquons comment déterminer la taille idéale du pool de connexions en fonction des exigences de débit de requêtes de votre application.

Amazon Keyspaces autorise un maximum de 3 000 requêtes CQL par seconde et par connexion TCP. Il n'y a donc pratiquement aucune limite quant au nombre de connexions qu'un conducteur peut établir avec Amazon Keyspaces. Toutefois, nous vous recommandons d'adapter la taille du pool de connexions aux exigences de votre application et de prendre en compte les points de terminaison disponibles lorsque vous utilisez Amazon Keyspaces avec des connexions de point de terminaison VPC.

Vous configurez la taille du pool de connexions dans le pilote client. Par exemple, sur la base d'un pool local de 2 et d'un point de terminaison d'interface VPC créé dans 3 zones de disponibilité, le pilote établit 6 connexions pour les requêtes (7 au total, y compris une connexion de contrôle). À l'aide de ces 6 connexions, vous pouvez prendre en charge un maximum de 18 000 requêtes CQL par seconde.

Si votre application doit prendre en charge 40 000 requêtes CQL par seconde, revenez au nombre de requêtes nécessaires pour déterminer la taille du pool de connexions requis. Pour prendre en charge 40 000 requêtes CQL par seconde, vous devez configurer la taille du pool local sur au moins 5, ce qui prend en charge un minimum de 45 000 requêtes CQL par seconde.

Vous pouvez contrôler si vous dépassez le quota du nombre maximum d'opérations par seconde et par connexion en utilisant la PerConnectionRequestRateExceeded CloudWatch métrique dans l'espace de AWS/Cassandra noms. La PerConnectionRequestRateExceeded métrique indique le nombre de demandes adressées à Amazon Keyspaces qui dépassent le quota de taux de demandes par connexion.

Les exemples de code présentés dans cette étape montrent comment estimer et configurer le regroupement de connexions lorsque vous utilisez des points de terminaison VPC d'interface.

Java

Vous pouvez configurer le nombre de connexions par pool dans le pilote Java. Pour un exemple complet de connexion d'un pilote client Java, consultezUtilisation d'un pilote client Cassandra Java pour accéder à Amazon Keyspaces par programmation.

Lorsque le pilote client est démarré, la connexion de contrôle est d'abord établie pour les tâches administratives, telles que les modifications de schéma et de topologie. Ensuite, les connexions supplémentaires sont créées.

Dans l'exemple suivant, la configuration du pilote de taille de pool local est spécifiée comme 2. Si le point de terminaison du VPC est créé sur 3 sous-réseaux au sein du VPC, cela donne 7 points CloudWatch pour le point de terminaison de l'interface, comme indiqué NewConnections dans la formule suivante.

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 } }

Si le nombre de connexions actives ne correspond pas à la taille de pool que vous avez configurée (agrégation entre sous-réseaux) +1 connexion de contrôle, cela signifie que quelque chose empêche la création des connexions.

Node.js

Vous pouvez configurer le nombre de connexions par pool dans le pilote Node.js. Pour un exemple complet de connexion au pilote client Node.js, consultezUtilisation d'un pilote client Cassandra Node.js pour accéder à Amazon Keyspaces par programmation.

Dans l'exemple de code suivant, la configuration du pilote de taille de pool local est spécifiée comme 1. Si le point de terminaison du VPC est créé sur 4 sous-réseaux au sein du VPC, cela donne 5 points CloudWatch pour le point de terminaison de l'interface, comme indiqué NewConnections dans la formule suivante.

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 } });