Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Optimización de las conexiones de los controladores del cliente para el entorno sin servidor
Para comunicar con Amazon Keyspaces, puede utilizar cualquiera de los controladores de cliente de Apache Cassandra existentes de su elección. Dado que Amazon Keyspaces es un servicio sin servidor, le recomendamos que optimice la configuración de conexión de su controlador de cliente para las necesidades de rendimiento de su aplicación. En este tema se presentan prácticas recomendadas, incluso de cómo calcular cuántas conexiones necesita su aplicación, así como la monitorización y gestión de errores de las conexiones.
Temas
- Funcionamiento de las conexiones en Amazon Keyspaces
- Configuración de conexiones en Amazon Keyspaces
- Configuración de la política de reintentos para las conexiones en Amazon Keyspaces
- Configuración de conexiones sobre puntos de conexión de VPC en Amazon Keyspaces
- Monitoreo de conexiones en Amazon Keyspaces
- Gestión de errores de conexión en Amazon Keyspaces
Funcionamiento de las conexiones en Amazon Keyspaces
En esta sección se ofrece información general del funcionamiento de las conexiones del controlador de cliente en Amazon Keyspaces. Dado que una configuración incorrecta del controlador de cliente de Cassandra podría causar eventos PerConnectionRequestExceeded
en Amazon Keyspaces, es necesario configurar la cantidad correcta de conexiones en la configuración del controlador de cliente para evitar estos errores de conexión y otros similares.
Al conectarse a Amazon Keyspaces, el controlador requiere un punto de conexión inicial para establecer una conexión inicial. Amazon Keyspaces utiliza DNS para dirigir la conexión inicial a uno de los muchos puntos de conexión disponibles. Los puntos de conexión están vinculados a equilibradores de carga de red que, a su vez, establecen una conexión con uno de los controladores de solicitudes de la flota. Una vez establecida la conexión inicial, el controlador de cliente recopila información sobre todos los puntos de conexión disponibles en la tabla system.peers
. Con esta información, el controlador de cliente puede crear conexiones adicionales a los puntos de conexión de la lista. El número de conexiones que puede crear el controlador de cliente está limitado por el número de conexiones locales especificado en la configuración del controlador cliente. De forma predeterminada, la mayoría de los controladores de cliente establecen una conexión por punto de conexión y crean un grupo de conexiones a Cassandra y equilibran la carga de consultas sobre ese grupo de conexiones. Si bien se pueden establecer múltiples conexiones al mismo punto de conexión, detrás del equilibrador de carga de red podrían conectarse a muchos controladores de solicitudes diferentes. Al conectarse a través del punto de conexión público, el establecimiento de una conexión a cada uno de los nueve puntos de conexión enumerados en la tabla system.peers
da como resultado nueve conexiones a diferentes controladores de solicitudes.

Configuración de conexiones en Amazon Keyspaces
Amazon Keyspaces admite hasta 3000 consultas CQL por conexión TCP por segundo. Dado que no hay límite en el número de conexiones que un controlador puede establecer, recomendamos fijar como objetivo solo 500 consultas CQL por segundo por conexión para tener en cuenta la sobrecarga, los picos de tráfico y un mejor equilibrio de la carga. Siga estos pasos para asegurarse de que la conexión de su controlador esté correctamente configurada para las necesidades de su aplicación.
Aumente el número de conexiones por dirección IP que su controlador mantiene en su grupo de conexiones.
-
La mayoría de los controladores de Cassandra establecen un grupo de conexiones a Cassandra y equilibran la carga de consultas sobre ese grupo de conexiones. El comportamiento predeterminado de la mayoría de los controladores es establecer una única conexión con cada punto de conexión. Amazon Keyspaces expone nueve direcciones IP homólogas a los controladores, por lo que, en función del comportamiento predeterminado de la mayoría de los controladores, esto se traduce en 9 conexiones. Amazon Keyspaces admite hasta 3000 consultas CQL por conexión TCP por segundo, por lo que el rendimiento máximo de consulta CQL de un controlador que utilice la configuración predeterminada es de 27 000 consultas CQL por segundo. Si utiliza la configuración predeterminada del controlador, es posible que una sola conexión tenga que procesar más del rendimiento máximo de consulta CQL de 3000 consultas CQL por segundo. Esto podría dar lugar a eventos
PerConnectionRequestExceeded
. Para evitar los eventos
PerConnectionRequestExceeded
, debe configurar el controlador para crear conexiones adicionales por punto de conexión para distribuir el rendimiento.Como práctica recomendada en Amazon Keyspaces, suponga que cada conexión pueda admitir 500 consultas CQL por segundo.
Esto significa que, para una aplicación de producción que deba admitir unas 27 000 consultas CQL por segundo distribuidas entre los nueve puntos de conexión disponibles, deberá configurar seis conexiones por punto de conexión. Esto garantiza que cada conexión no procese más de 500 solicitudes por segundo.
Calcule el número de conexiones por dirección IP que necesita configurar para su controlador en función de las necesidades de su aplicación.
Para determinar el número de conexiones que necesita configurar por punto de conexión para su aplicación, considere el siguiente ejemplo. Usted tiene una aplicación que debe admitir 20 000 consultas CQL por segundo consistentes en 10 000 operaciones INSERT
, 5000 operaciones SELECT
y 5000 operaciones DELETE
. La aplicación Java se ejecuta en tres instancias en Amazon Elastic Container Service (Amazon ECS) donde cada instancia establece una única sesión en Amazon Keyspaces. El cálculo que puede utilizar para estimar cuántas conexiones necesita configurar para su controlador utiliza la siguiente entrada.
El número de solicitudes por segundo que debe admitir su aplicación.
El número de instancias disponibles, menos una a fin de tener en cuenta mantenimiento o fallos.
El número de puntos de conexión disponibles. Si se conecta a través de puntos de conexión públicos, cuenta con nueve puntos de conexión disponibles. Si utiliza puntos de conexión de VPC, tiene entre dos y cinco puntos de conexión disponibles, según la región.
Utilice 500 consultas CQL por segundo y por conexión como práctica recomendada para Amazon Keyspaces.
Redondee el resultado.
En este ejemplo, la fórmula tiene este aspecto.
20,000 CQL queries / (3 instances - 1 failure) / 9 public endpoints / 500 CQL queries per second = ROUND(2.22) = 3
En función de este cálculo, debe especificar tres conexiones locales por punto de conexión en la configuración del controlador. Para las conexiones remotas, configure solo una conexión por punto de conexión.
Configuración de la política de reintentos para las conexiones en Amazon Keyspaces
Al configurar la política de reintentos para una conexión a Amazon Keyspaces, le recomendamos que implemente la política de reintentos de Amazon Keyspaces AmazonKeyspacesExponentialRetryPolicy
. Esta política de reintentos es más adecuada para volver a intentarlo a través de conexiones a Amazon Keyspaces distintas a la DefaultRetryPolicy
del controlador.
Con la AmazonKeyspacesExponentialRetryPolicy
, puede configurar el número de reintentos de la conexión que mejor se ajuste a sus necesidades. De forma predeterminada, el número de reintentos para la AmazonKeyspacesExponentialRetryPolicy
está establecido en 3.
Una ventaja adicional es que la política de reintentos de Amazon Keyspaces devuelve la excepción original devuelta por el servicio, lo que indica por qué falló el intento de solicitud. La política de reintentos predeterminada solo devuelve la NoHostAvailableException
genérica, lo que podría ocultar información sobre el error de la solicitud.
Para configurar la política de reintentos de solicitudes mediante la AmazonKeyspacesExponentialRetryPolicy
, le recomendamos que configure un número reducido de reintentos y que administre cualquier excepción devuelta en el código de la aplicación.
Para ver ejemplos de código en el que se implementan políticas de reintentos, consulte Amazon Keyspaces retry policies
Configuración de conexiones sobre puntos de conexión de VPC en Amazon Keyspaces
Al conectarse a través de puntos de conexión de VPC privados, lo más probable es que disponga de 3 puntos de conexión. El número de puntos de conexión de VPC puede ser diferente por región, en función del número de zonas de disponibilidad y del número de subredes de la VPC asignada. La región Este de EE. UU. (Norte de Virginia) tiene cinco zonas de disponibilidad y puede tener hasta cinco puntos de conexión de Amazon Keyspaces. La región Oeste de EE. UU. (Norte de California) tiene dos zonas de disponibilidad y puede tener hasta dos puntos de conexión de Amazon Keyspaces. El número de puntos de conexión no afecta a la escala, pero sí aumenta el número de conexiones que necesita establecer en la configuración del controlador. Considere el siguiente ejemplo. Su aplicación debe admitir 20 000 consultas CQL y se ejecuta en tres instancias en Amazon ECS, donde cada instancia establece una única sesión con Amazon Keyspaces. La única diferencia es el número de puntos finales disponibles en los diferentes Regiones de AWS.
Conexiones necesarias en la región Este de EE. UU. (Norte de Virginia):
20,000 CQL queries / (3 instances - 1 failure) / 5 private VPC endpoints / 500 CQL queries per second = 4 local connections
Conexiones necesarias en la región Oeste de EE. UU. (Norte de California):
20,000 CQL queries / (3 instances - 1 failure) / 2 private VPC endpoints / 500 CQL queries per second = 10 local connections
importante
Cuando se utilizan puntos de conexión de VPC privados, se requieren permisos adicionales para que Amazon Keyspaces descubra los puntos de conexión de VPC disponibles de forma dinámica y rellene la tabla system.peers
. Para obtener más información, consulte Relleno de entradas de la tabla system.peers con información del punto de conexión de VPC de interfaz.
Al acceder a Amazon Keyspaces a través de un punto de enlace de VPC privado utilizando otro Cuenta de AWS, es probable que solo vea un punto de enlace de Amazon Keyspaces. Una vez más, esto no repercute en la escala del posible rendimiento de Amazon Keyspaces, pero es posible que tenga que aumentar el número de conexiones en la configuración de su controlador. En este ejemplo se muestra el mismo cálculo para un único punto de conexión disponible.
20,000 CQL queries / (3 instances - 1 failure) / 1 private VPC endpoints / 500 CQL queries per second = 20 local connections
Para obtener más información sobre el acceso entre cuentas a Amazon Keyspaces mediante una VPC compartida, consulte Configuración del acceso entre cuentas a Amazon Keyspaces mediante puntos de conexión de VPC en una VPC compartida.
Monitoreo de conexiones en Amazon Keyspaces
Con el fin de identificar el número de puntos de conexión a los que está conectada su aplicación, puede registrar el número de pares descubiertos en la tabla system.peers
. En el siguiente ejemplo, un ejemplo de código Java imprime el número de pares una vez establecida la conexión.
ResultSet result = session.execute(new SimpleStatement("SELECT * FROM system.peers")); logger.info("number of Amazon Keyspaces endpoints:" + result.all().stream().count());
nota
La consola o AWS consola CQL no se implementan en una VPC y, por lo tanto, utilizan el punto final público. Como resultado, la ejecución de la consulta system.peers
desde aplicaciones ubicadas fuera de la VPCE suele dar como resultado 9 pares. También podría ser útil imprimir las direcciones IP de cada par.
También puedes observar el número de pares cuando utilizas un punto final de VPC configurando las métricas de Amazon CloudWatch de VPCE. En CloudWatch, puede ver la cantidad de conexiones establecidas con el punto final de la VPC. Los controladores de Cassandra establecen una conexión para cada punto de conexión para enviar consultas CQL y una conexión de control para recopilar información de la tabla del sistema. La siguiente imagen muestra las CloudWatch métricas de los puntos de conexión de la VPC después de conectarse a Amazon Keyspaces con 1 conexión configurada en la configuración del controlador. La métrica muestra seis conexiones activas consistentes en una conexión de control y cinco conexiones (1 por punto de conexión en todas las zonas de disponibilidad).

Para empezar a monitorizar el número de conexiones mediante un CloudWatch gráfico, puede implementar esta AWS CloudFormation plantilla disponible GitHub en el repositorio de plantillas de Amazon Keyspaces
Gestión de errores de conexión en Amazon Keyspaces
Cuando se supera la cuota de 3000 solicitudes por conexión, Amazon Keyspaces devuelve un evento PerConnectionRequestExceeded
y el controlador de Cassandra recibe una excepción WriteTimeout
o ReadTimeout
. Debería reintentar esta excepción con un retroceso exponencial en su política de reintentos de Cassandra o en su aplicación. Debería proporcionar un retroceso exponencial para evitar el envío de solicitudes adicionales.
La política de reintento predeterminada intenta try next host
en el plan de consultas. Dado que Amazon Keyspaces podría tener de uno a tres puntos de conexión disponibles al conectarse al punto de conexión de VPC, es posible que también vea la NoHostAvailableException
además de las excepciones WriteTimeout
y ReadTimeout
en los registros de su aplicación. Puede utilizar las políticas de reintento proporcionadas por Amazon Keyspaces, que reintentan en el mismo punto de conexión pero a través de conexiones diferentes.
Puede encontrar ejemplos de políticas de reintentos exponenciales para Java GitHub en el repositorio de ejemplos de código Java de Amazon Keyspaces