Tipos de estratégia de balanceamento de carga
Tags: devops, braziliandevs
Published: 2024-07-12 15:41:30

Olá, Mentes Tech!

Trabalhei essa semana em um estratégia de balanceamento de cargas, e antes dessa pesquisa, confesso que conhecia/usava somente 3 das que estão na lista abaixo, bora falar de estratégias ?

O balanceamento de carga é uma técnica para melhorar a disponibilidade e a eficiência dos serviços de TI, distribuindo as cargas de trabalho de maneira equitativa entre vários recursos de computação. 

Aqui estão algumas estratégias comuns de balanceamento de carga:

### 1. Round Robin
- **Descrição**: As solicitações são distribuídas sequencialmente entre os servidores.
- **Vantagens**: Simples de implementar e eficaz para cargas uniformemente distribuídas.
- **Desvantagens**: Não leva em consideração a carga atual dos servidores, podendo sobrecarregar servidores mais lentos.

### 2. Least Connections
- **Descrição**: As solicitações são enviadas para o servidor com o menor número de conexões ativas.
- **Vantagens**: Ajuda a evitar sobrecarga em servidores ocupados.
- **Desvantagens**: Pode não ser eficiente se as conexões tiverem durações variáveis.

### 3. Least Response Time
- **Descrição**: Direciona as solicitações para o servidor com o menor tempo de resposta.
- **Vantagens**: Geralmente resulta em uma distribuição mais equilibrada, considerando a capacidade de resposta dos servidores.
- **Desvantagens**: Pode exigir monitoramento constante dos tempos de resposta.

### 4. IP Hash
- **Descrição**: Usa um algoritmo de hash baseado no endereço IP do cliente para determinar o servidor de destino.
- **Vantagens**: Garante que as solicitações de um cliente específico sejam sempre direcionadas ao mesmo servidor.
- **Desvantagens**: Pode levar a uma distribuição desigual se os IPs não forem distribuídos uniformemente.

### 5. Weighted Round Robin
- **Descrição**: Extensão do Round Robin, onde cada servidor é atribuído a um peso, e servidores com maior capacidade recebem mais solicitações.
- **Vantagens**: Permite considerar as capacidades diferentes dos servidores.
- **Desvantagens**: Requer configuração manual dos pesos, o que pode ser complexo.

### 6. Weighted Least Connections
- **Descrição**: Combina os conceitos de Least Connections e pesos, direcionando as solicitações para servidores com menos conexões ativas, ponderados por sua capacidade.
- **Vantagens**: Equilibra carga de forma mais eficaz em ambientes heterogêneos.
- **Desvantagens**: Pode ser mais complexo de configurar e monitorar.

### 7. Random
- **Descrição**: Direciona as solicitações para um servidor escolhido aleatoriamente.
- **Vantagens**: Simples e pode ser eficaz em ambientes com servidores de capacidades semelhantes.
- **Desvantagens**: Pode resultar em distribuição desigual e ineficiente.

### 8. Consistent Hashing
- **Descrição**: Utiliza uma técnica de hash que mapeia solicitações para servidores de forma a minimizar a redistribuição de carga quando servidores são adicionados ou removidos.
- **Vantagens**: Boa escalabilidade e estabilidade em sistemas dinâmicos.
- **Desvantagens**: Pode ser complexo de implementar.

### 9. Server Health Monitoring
- **Descrição**: Monitora a saúde dos servidores e desvia o tráfego de servidores que estão falhando ou sobrecarregados.
- **Vantagens**: Aumenta a resiliência e a disponibilidade do sistema.
- **Desvantagens**: Requer ferramentas adicionais e monitoramento contínuo.

### 10. Anycast Routing
- **Descrição**: Usa a topologia da rede para direcionar as solicitações para o servidor mais próximo (em termos de roteamento).
- **Vantagens**: Pode reduzir a latência.
- **Desvantagens**: Pode ser complexo de implementar e depende da infraestrutura da rede.

###Conclusão
Cada estratégia tem seus prós e contras, e a escolha da melhor técnica de balanceamento de carga depende das necessidades específicas da aplicação, da infraestrutura disponível e dos requisitos de desempenho e disponibilidade.

Após conhecer as estratégias disponíveis,
optei por usar o Weighted Round Robin, pois é o cenário proposto, dividir a carga de trabalho entre servidores.