Configurar grupos de conexión
Algunas bibliotecas de cliente de Cloud Bigtable te permiten configurar el número de canales 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.
Los grupos de conexiones se redimensionan automáticamente según sea necesario cuando usas la biblioteca de 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 muestran fragmentos de código que explican cómo configurar los grupos de conexiones.
Antes de leer esta página, consulta la descripción general de los grupos de conexiones de Bigtable para saber cómo funcionan y si deberías cambiar los tuyos.
Las siguientes bibliotecas de cliente ofrecen la agrupación de conexiones y te permiten configurar el número de grupos:
- Biblioteca de cliente de Go para Cloud Bigtable
- Cliente de HBase de Cloud Bigtable para Java
- Biblioteca de cliente de Cloud Bigtable para Java
- Biblioteca de cliente de C++ de Cloud Bigtable
Determinar el tamaño óptimo del grupo de conexiones
Lo ideal es que un grupo de conexiones tenga aproximadamente el doble de conexiones de las que necesita para alcanzar la saturación máxima, de modo que haya margen para las fluctuaciones del tráfico. Como una conexión puede gestionar un máximo de 100 solicitudes simultáneas, lo ideal es que haya entre 10 y 50 solicitudes pendientes por conexión. Este concepto se describe con más detalle en Grupos de conexiones.
Monitoriza el tráfico después de hacer cambios y ajusta el número de conexiones de tu grupo si es necesario.
Los pasos que se indican a continuación te ayudarán a calcular el número óptimo de conexiones de tu grupo de canales mediante métricas del lado del cliente, como las que ofrece OpenCensus.
- A partir de las métricas del lado del cliente, recopila la siguiente información:
- El número máximo de consultas por segundo (CPS) por cliente cuando tu aplicación ejecuta una carga de trabajo típica.
- Latencia media (tiempo de respuesta de una sola solicitud) en milisegundos.
- Para determinar el número de solicitudes que puede enviar en serie por segundo,divida 1000 entre el valor de latencia medio.
- Divide las consultas por segundo entre el número de solicitudes en serie por segundo.
- Divide el resultado entre 50 solicitudes por canal para determinar el tamaño mínimo óptimo del grupo de canales. Si el resultado es inferior a 2, utiliza al menos 2 canales para asegurar la redundancia.
- Divide el mismo resultado entre 10 solicitudes por canal para determinar el tamaño máximo óptimo del grupo de canales.
Estos pasos se expresan en las siguientes ecuaciones:
(QPS por segundo ÷ (1000 ÷ latencia en ms)) ÷ 50 flujos = número mínimo óptimo de conexiones
(CPS ÷ (1000 ÷ latencia en ms)) ÷ 10 flujos = número óptimo máximo de conexiones
Ejemplo
Tu aplicación suele enviar 50.000 solicitudes por segundo y la latencia media es de 10 ms. Divide 1000 entre 10 ms para determinar que puedes enviar 100 solicitudes en serie por segundo. Divide ese número entre 50.000 para obtener el paralelismo necesario para enviar 50.000 CPS: 500. Cada canal puede tener un máximo de 100 solicitudes simultáneas, y la utilización del canal de destino debe estar entre 10 y 50 transmisiones simultáneas. Por lo tanto, para calcular el mínimo, divide 500 entre 50 para obtener 10. Para encontrar el máximo, divide 500 entre 10 para obtener 50. Esto significa que el tamaño del grupo de canales de este ejemplo debe estar entre 10 y 50 conexiones.
Establecer el tamaño de la piscina
En los siguientes ejemplos de código se muestra cómo configurar el número de grupos en las bibliotecas de cliente que permiten definir el tamaño del grupo.
Go
HBase
Esta muestra solo se aplica a las versiones de la biblioteca de 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 de cliente anteriores a la 2.23.0, cuando se introdujo el cambio de tamaño automático.