Etapa 6: (opcional) práticas recomendadas para configurar o tamanho do pool de conexões para seu aplicativo - Amazon Keyspaces (para Apache Cassandra)

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Etapa 6: (opcional) práticas recomendadas para configurar o tamanho do pool de conexões para seu aplicativo

Nesta seção, descrevemos como determinar o tamanho ideal do pool de conexões com base nos requisitos de throughput de consultas do seu aplicativo.

O Amazon Keyspaces permite um máximo de 3.000 consultas CQL por segundo por conexão TCP. Portanto, praticamente não há limite no número de conexões que um driver pode estabelecer com o Amazon Keyspaces. No entanto, recomendamos que você combine o tamanho do pool de conexões com os requisitos do seu aplicativo e considere os endpoints disponíveis ao usar o Amazon Keyspaces com conexões de endpoints da VPC.

Você configura o tamanho do pool de conexões no driver do cliente. Por exemplo, com base em um pool local de 2 e em um endpoint da VPC de interface criado em 3 zonas de disponibilidade, o driver estabelece 6 conexões para consulta (7 no total, o que inclui uma conexão de controle). Usando essas 6 conexões, você pode suportar no máximo 18.000 consultas CQL por segundo.

Se seu aplicativo precisar oferecer suporte a 40.000 consultas CQL por segundo, trabalhe retroativamente a partir do número de consultas necessárias para determinar o tamanho do pool de conexões necessário. Para oferecer suporte a 40.000 consultas CQL por segundo, você precisa configurar o tamanho do pool local para pelo menos 5, o que dá suporte a um mínimo de 45.000 consultas CQL por segundo.

Você pode monitorar se excede a cota do número máximo de operações por segundo, por conexão, usando a PerConnectionRequestRateExceeded CloudWatch métrica no AWS/Cassandra namespace. A métrica PerConnectionRequestRateExceeded mostra o número de solicitações para o Amazon Keyspaces que excedem a cota da taxa de solicitações por conexão.

Os exemplos de código nesta etapa mostram como estimar e configurar o pool de conexões quando você usa endpoints da VPC de interface.

Java

O número de conexões por pool é configurável no driver Java. Para obter um exemplo completo de uma conexão de driver de cliente Java, consulte Como usar um driver de cliente Java Cassandra para acessar o Amazon Keyspaces programaticamente.

Quando o driver do cliente é iniciado, primeiro a conexão de controle é estabelecida para tarefas administrativas, como alterações de esquema e topologia. Em seguida, as conexões adicionais são criadas.

No exemplo a seguir, a configuração do driver do tamanho do pool local é especificada como 2. Se o endpoint da VPC for criado em 3 sub-redes dentro da VPC, isso resultará em NewConnections 7 entradas para o endpoint da interface, CloudWatch conforme mostrado na fórmula a seguir.

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

Se o número de conexões ativas não corresponder ao tamanho do pool configurado (agregação entre sub-redes) + 1 conexão de controle, algo está impedindo que as conexões sejam criadas.

Node.js

Você pode configurar o número de conexões por pool no driver Node.js. Para obter um exemplo completo de uma conexão de driver de cliente Node.js, consulte Como usar um driver de cliente Cassandra Node.js para acessar o Amazon Keyspaces programaticamente.

No exemplo de código a seguir, a configuração do driver do tamanho do pool local é especificada como 1. Se o endpoint da VPC for criado em 4 sub-redes dentro da VPC, isso resultará em NewConnections 5 entradas para o endpoint da interface, CloudWatch conforme mostrado na fórmula a seguir.

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