Configure conjuntos de ligações
Algumas bibliotecas cliente do Cloud Bigtable permitem-lhe configurar o número de canais gRPC no conjunto de ligações de um cliente, também conhecido como conjunto de canais. Na maioria dos casos, a configuração predefinida está correta e não é necessário alterá-la.
Os conjuntos de ligações são redimensionados automaticamente conforme necessário quando usa a biblioteca de cliente do Cloud Bigtable para Java versão 2.23.0 ou posterior e quando usa o cliente HBase do Cloud Bigtable para Java versão 2.9.1 ou posterior.
Esta página descreve como determinar o tamanho ideal do conjunto de ligações para a sua aplicação e apresenta fragmentos de código que mostram como configurar os conjuntos de ligações.
Antes de ler esta página, leia a vista geral dos conjuntos de ligações do Bigtable para saber como funcionam e se deve alterar os seus.
As seguintes bibliotecas cliente oferecem o agrupamento de ligações e permitem-lhe configurar o número de agrupamentos:
- Biblioteca cliente Go para o Cloud Bigtable
- Cliente HBase do Cloud Bigtable para Java
- Biblioteca cliente do Cloud Bigtable para Java
- Biblioteca cliente C++ do Cloud Bigtable
Determine o melhor tamanho do conjunto de ligações
Idealmente, para deixar espaço para flutuações de tráfego, um conjunto de ligações tem cerca do dobro do número de ligações necessárias para a saturação máxima. Uma vez que uma ligação pode processar um máximo de 100 pedidos simultâneos, o ideal é ter entre 10 e 50 pedidos pendentes por ligação. Este conceito é descrito com mais detalhe em Pools de ligações.
Monitorize o tráfego após fazer alterações e ajuste o número de ligações no seu conjunto, se necessário.
Os passos seguintes ajudam a calcular o número ideal de ligações no conjunto de canais através de métricas do lado do cliente, como as disponíveis no OpenCensus.
- A partir das métricas do lado do cliente, recolha as seguintes informações:
- O número máximo de consultas por segundo (CPS) por cliente quando a sua aplicação está a executar uma carga de trabalho típica.
- A latência média (o tempo de resposta para um único pedido) em ms.
- Determine o número de pedidos que pode enviar em série por segundo dividindo 1000 pelo valor de latência médio.
- Divida o CPS em segundos pelo número de pedidos em série por segundo.
- Divida o resultado por 50 pedidos por canal para determinar o tamanho mínimo ideal do conjunto de canais. (Se o cálculo for inferior a 2, use, mesmo assim, pelo menos 2 canais para garantir a redundância.)
- Divida o mesmo resultado por 10 pedidos por canal para determinar o tamanho máximo ideal do conjunto de canais.
Estes passos são expressos nas seguintes equações:
(QPS por segundo ÷ (1000 ÷ latência em ms)) ÷ 50 streams = Número mínimo ideal de ligações
(QPS por segundo ÷ (1000 ÷ latência em ms)) ÷ 10 streams = Número máximo ideal de ligações
Exemplo
A sua aplicação envia normalmente 50 000 pedidos por segundo e a latência média é de 10 ms. Divida 1000 por 10 ms para determinar que pode enviar 100 pedidos em série por segundo. Divida esse número por 50 000 para obter o paralelismo necessário para enviar 50 000 QPS: 500. Cada canal pode ter, no máximo, 100 pedidos em simultâneo, e a utilização do canal de destino está entre 10 e 50 streams em simultâneo. Por conseguinte, para calcular o mínimo, divida 500 por 50 para obter 10. Para encontrar o máximo, divida 500 por 10 para obter 50. Isto significa que, para este exemplo, o tamanho do conjunto de canais deve estar entre 10 e 50 ligações.
Defina o tamanho do conjunto
Os seguintes exemplos de código demonstram como configurar o número de conjuntos nas bibliotecas de cliente que lhe permitem definir o tamanho do conjunto.
Go
HBase
Este exemplo aplica-se apenas a versões da biblioteca de cliente anteriores a 2.9.1, quando foi introduzido o redimensionamento automático.
Java
Este exemplo aplica-se apenas a versões da biblioteca de cliente anteriores a 2.23.0, quando foi introduzida a mudança de tamanho automática.