Configurar grupos de conexiones
Algunas bibliotecas cliente de Cloud Bigtable te permiten configurar la cantidad de canales de gRPC en el grupo de conexiones de un cliente, también conocido como grupo de canales. En la mayoría de los casos, la configuración predeterminada es correcta y no es necesario cambiarla.
El tamaño de los grupos de conexiones se ajusta automáticamente según sea necesario cuando usas la biblioteca cliente de Cloud Bigtable para Java versión 2.23.0 o posterior, y cuando usas el cliente de HBase de Cloud Bigtable para Java versión 2.9.1 o posterior.
En esta página, se describe cómo determinar el tamaño óptimo del grupo de conexiones de tu aplicación y se presentan fragmentos de código que muestran cómo configurar los grupos de conexiones.
Antes de leer esta página, lee la descripción general de los grupos de conexiones de Bigtable a fin de obtener información sobre cómo funcionan y si debes cambiar el tuyo.
Las siguientes bibliotecas cliente ofrecen la agrupación de conexiones y te permiten configurar la cantidad de grupos:
- Biblioteca cliente de Go para Cloud Bigtable
- Cliente de HBase de Cloud Bigtable para Java
- Biblioteca cliente de Cloud Bigtable para Java
- Biblioteca cliente de C++ de Cloud Bigtable
Determina el mejor tamaño del grupo de conexiones
Lo ideal es dejar espacio para las fluctuaciones de tráfico; un grupo de conexiones tiene aproximadamente el doble de la cantidad de conexiones que se requiere para una saturación máxima. Debido a que una conexión puede manejar un máximo de 100 solicitudes simultáneas, entre 10 y 50 solicitudes pendientes por conexión son óptimas. Este concepto se describe con más detalle en Grupos de conexión.
Supervisa el tráfico después de realizar cambios y ajusta la cantidad de conexiones en tu grupo si es necesario.
Los siguientes pasos te ayudan a calcular la cantidad óptima de conexiones en el grupo de canales mediante métricas del cliente, como las que están disponibles en OpenCensus.
- Desde las métricas del cliente, recopila la siguiente información:
- La cantidad máxima de consultas por segundo (QPS) por cliente cuando la aplicación ejecuta una carga de trabajo típica.
- La latencia promedio (el tiempo de respuesta de una sola solicitud) en ms.
- Determina la cantidad de solicitudes que puedes enviar en serie por segundo: divide 1,000 por el valor de latencia promedio.
- Divide las QPS en segundos por la cantidad de solicitudes en serie por segundo.
- Divide el resultado por 50 solicitudes por canal para determinar el tamaño mínimo de grupo de canales óptimo. (Si el cálculo es menor que 2, usa al menos 2 canales de todos modos para garantizar la redundancia).
- Divide el mismo resultado por 10 solicitudes por canal para determinar el tamaño máximo de grupo de canales.
Estos pasos se expresan en las siguientes ecuaciones:
(QPS s ÷ (1,000 ÷ latencia de ms)) ÷ 50 transmisiones = cantidad mínima de conexiones óptimas
(QPS s ÷ (1,000 ÷ latencia ms)) ÷ 10 transmisiones = cantidad máxima de conexiones óptima
Ejemplo
Por lo general,tu aplicación envía 50, 000 solicitudes por segundo y la latencia promedio es de 10 ms. Divide 1,000 por 10 ms para determinar que puedes enviar 100 solicitudes en serie por segundo. Divide ese número en 50,000 para obtener el paralelismo necesario a fin de enviar 50,000 QPS: 500. Cada canal puede tener 100 solicitudes simultáneas como máximo y el uso de tu canal objetivo está entre 10 y 50 transmisiones simultáneas. Por lo tanto, para calcular el mínimo, divide 500 por 50 a fin de obtener 10. Para encontrar el máximo, divide 500 por 10 para obtener 50. Esto significa que el tamaño de tu grupo de canales para este ejemplo debe estar entre 10 y 50 conexiones.
Configura el tamaño del grupo
En las siguientes muestras de código, se indica cómo configurar la cantidad de grupos en las bibliotecas cliente que te permiten configurar el tamaño del grupo.
Go
HBase
Este ejemplo solo se aplica a las versiones de la biblioteca cliente anteriores a la 2.9.1, cuando se introdujo el cambio de tamaño automático.
Java
Este ejemplo solo se aplica a las versiones de la biblioteca cliente anteriores a la 2.23.0, cuando se introdujo el cambio de tamaño automático.