Réplicas do Elasticsearch para balanceamento de carga em Serverless

Aprenda como o Elastic Cloud Serverless ajusta automaticamente as réplicas de índice com base na carga de busca, garantindo um desempenho ideal de consulta sem configuração manual.

No Elastic Cloud Serverless, ajustamos automaticamente o número de réplicas para seus índices com base na carga de busca, garantindo um desempenho ótimo de consultas sem qualquer configuração manual. Neste blog, vamos explicar como as réplicas são escaladas, quando o sistema as adiciona ou remove, e o que isso significa para seus índices.

A festa está ficando cheia

Você está organizando uma festa da pizza. Você tem alguns amigos ajudando a servir, cada um em diferentes pontos da sala. Você dá uma pizza para cada amigo, e eles começam a distribuir fatias para os convidados famintos conforme chegam.

No começo, as coisas correm tranquilamente. Alguns convidados vão chegando, seus amigos servem as fatias, e todo mundo fica feliz. Mas então a notícia sobre suas pizzas de massa fermentada começa a se espalhar. A campainha continua tocando. Os convidados chegam em massa. Logo, uma multidão começa a se formar em torno de um de seus amigos, aquele que está segurando a pizza de pepperoni, que todo quer.

Seu amigo com a pizza de pepperoni está sobrecarregado. Os convidados estão esperando, ficando impacientes, e uma grande fila se formou. Enquanto isso, seu amigo segurando a pizza margherita está parado com quase ninguém pedindo uma fatia.

O que você faz?

Você pede mais algumas pizzas de pepperoni e as entrega para outros amigos. Agora, três amigos estão segurando fatias de pepperoni em vez de um. A multidão se espalha e, de repente, você pode servir três vezes mais convidados ao mesmo tempo.

Algumas coisas ficam claras conforme você organiza mais festas:

  • Nem todas as pizzas são igualmente populares. Algumas têm alta demanda, enquanto outras têm menos interessados. Você não precisa de "cópias" extras das impopulares; você precisa de mais das que têm filas.
  • Peça mais pizzas antes que a fila fique muito longa. Se esperar até que seu amigo esteja completamente sobrecarregado e os convidados estejam indo embora com raiva, você já esperou demais. Melhor pegar uma pizza extra quando você vê uma multidão se formando.
  • Não jogue as pizzas fora muito rápido. Só porque a multidão ao redor do pepperoni diminuiu por cinco minutos não significa que a correria acabou. Talvez eles estejam apenas reabastecendo as bebidas, ou até conversando entre si (isso ainda existe?). Mantenha as pizzas extras prontas. Se a pausa continuar por um tempo, você pode guardá-las.
  • Você só pode distribuir tantas pizzas quanto o número de amigos que estão ajudando. Se você só tem quatro amigos ajudando, dez pizzas não mudarão o resultado. Apenas quatro podem ser servidas de uma vez. Ajuste a quantidade de pizzas ao número de mãos disponíveis.
  • Quando um amigo for embora, pegue a pizza dele. Se algum dos seus amigos precisar sair, pegue a pizza dele imediatamente. Você não pode deixar pizzas sem vigilância. Entregue para outra pessoa ou guarde.

De pizzas a réplicas

Vamos mapear isso de volta para o Elasticsearch.

Na nossa analogia, as pizzas são réplicas (cópias dos seus shards de índice), seus amigos ajudando a servir são nodes de busca, convidados famintos são consultas de busca e aquela pizza popular com uma multidão ao redor é um índice em alta com alta carga de busca.

Quando o tráfego de busca aumenta em um índice específico, criamos réplicas adicionais e as distribuir entre seus nodes de busca. Qualquer réplica pode atender a qualquer consulta para esse índice, assim como qualquer amigo com pepperoni pode distribuir fatias de pepperoni. Mais réplicas significam maior rendimento: três réplicas podem lidar com três vezes mais consultas por segundo de uma única réplica.

Medindo a fome

Antes de decidirmos quantas pizzas pedir, precisamos saber o quão faminta está a multidão.

O Elasticsearch rastreia a carga de busca para cada shard. É uma métrica que captura quanta atividade de busca um shard está gerenciando. Agregamos isso em todos os shards de um índice para entender a demanda total de busca.

O que mais importa é a carga relativa de busca: qual a proporção do tráfego total de busca do seu projeto está atingindo cada índice? Se um índice recebe 60% de todas as buscas enquanto outro recebe 5%, sabemos onde adicionar capacidade.

A matemática por trás das pizzas

Calculamos o número ótimo de réplicas seguindo esta fórmula:

Onde:

  • L = a carga de pesquisa relativa do índice (entre 0 e 1).
  • N = o número de nodes de busca desejados em seu projeto.
  • S = o número de fragmentos no índice.
  • X = um limite para evitar pontos em alta (padrão: 0,5).

Um exemplo: quatro nós de busca, um índice com dois shards principais recebendo 80% do tráfego de busca:

Este índice em alta possui quatro réplicas distribuídas pelos nodes de busca.

O limiar X (padrão para 0,5) é importante. Não esperamos até que uma réplica seja completamente sobrecarregada; redimensionamos quando está com metade da capacidade. Distribua a pizza extra quando vir a multidão se formando, não quando os convidados já estiverem saindo.

Aumente rápido, reduza devagar.

Quando a carga de busca aumenta, adicionamos réplicas imediatamente. Não há motivo para deixar os usuários esperando.

Quando a carga de busca diminui, esperamos um pouco antes de agir. Precisamos ver uma demanda consistentemente baixa por cerca de 30 minutos antes de reduzir as réplicas. (Isso é para lidar com o tráfego irregular, onde um momento de silêncio não significa que a festa acabou.)

Isso é importante porque adicionar uma réplica tem um custo. A nova réplica copia os dados e esquenta seus caches antes de atender as consultas de forma eficiente. Remover réplicas de forma precipitada significa pagar constantemente esse custo inicial, já que o tráfego naturalmente flutua.

Respeitando os limites da topologia

As réplicas nunca podem exceder o número de nós de busca. Ter mais réplicas do que nós não traz benefício (você só pode servir tantas pizzas quanto amigos ajudam a servir fatias).

Quando nós são removidos do seu projeto, reduzimos as réplicas imediatamente para acompanhar. Sem esperar o cooldown, já que você não pode ter réplicas não atribuídas. No momento em que um amigo vai embora, removemos a pizza dele.

O panorama maior do Serverless

As réplicas para balanceamento de carga de busca funcionam junto com outros sistemas de autoescalonamento:

  • O autoescalonamento de busca ajusta o número de nós de busca (quantos amigos estão ajudando).
  • Réplicas para balanceamento de carga em buscas distribuem o tráfego ajustando a quantidade de réplicas por índice (quantas "pizzas" de cada tipo precisamos).
  • O particionamento automático de fluxo de dados otimiza a quantidade de shards para gravações (como dividir cada pizza, explicado na postagem anterior).

Um princípio importante de design: réplicas para balanceamento de carga não acionam diretamente o autoescalonamento da busca. Em vez disso, ao distribuir as requisições de busca entre mais réplicas, isso permite aumentar a utilização de recursos entre seus nós de busca. Essa maior utilização então ativa nossa lógica de autoescalonamento existente para aumentar a capacidade, se necessário. Réplicas para balanceamento de carga permitem que o autoescalonamento faça seu papel, garantindo que seus nós de busca estejam realmente sendo usados, em vez de ter todo o tráfego preso em uma única réplica enquanto outros nós ficam parados.

O que isso significa para você

Você não precisa prever quais índices serão populares. Você não precisa ajustar as réplicas manualmente quando os padrões de tráfego mudam. Você não precisa acordar às 3 da manhã porque um pico sobrecarregou seu índice mais ocupado.

O sistema observa onde as filas estão se formando e pede mais pizzas para esses lugares. Índices em baixa não desperdiçam recursos com réplicas desnecessárias. Os índices em alta recebem a capacidade necessária. Seu orçamento vai aonde realmente importa.

Conclusão

Na postagem sobre particionamento automático, garantimos que suas pizzas sejam cortadas corretamente. Agora, com réplicas para balanceamento de carga de busca, garantimos que você tenha pizzas suficientes, nas mãos certas, quando as multidões famintas chegarem.

Experimente Elastic Cloud Serverless e deixe a logística da pizza com a gente.

Perguntas frequentes

Quão útil foi este conteúdo?

Não útil

Um pouco útil

Muito útil

Conteúdo relacionado

Pronto para criar buscas de última geração?

Uma pesquisa suficientemente avançada não se consegue apenas com o esforço de uma só pessoa. O Elasticsearch é impulsionado por cientistas de dados, especialistas em operações de aprendizado de máquina, engenheiros e muitos outros que são tão apaixonados por buscas quanto você. Vamos nos conectar e trabalhar juntos para construir a experiência de busca mágica que lhe trará os resultados desejados.

Experimente você mesmo(a)