[System Design Series] Balanceamento de carga e proxy reverso

A intenção original da série de design de sistema

System Design Primer: 英文文档 GitHub - donnemartin/system-design-primer: Aprenda como projetar sistemas em grande escala. Prepare-se para a entrevista de design do sistema. Inclui flashcards Anki.

Versão chinesa: https://github.com/donnemartin/system-design-primer/blob/master/README-zh-Hans.md

A intenção original é principalmente aprender o design do sistema, mas a versão chinesa parece uma tradução automática, então ainda faço algumas anotações simples manualmente e comparo a versão em inglês com a ajuda da IA ​​com base em meu próprio entendimento das partes difíceis de entender. Tradução e expansão do conhecimento.
 

balanceador de carga

Fonte: Padrões de Design de Sistema Escalável 

Quando se trata de balanceadores de carga, a primeira coisa a fazer é introduzir o conceito de balanceamento de carga

O que é balanceamento de carga

Load Balance (Load Balance) é uma tecnologia de otimização de rede usada para compartilhar a pressão de trabalho de dispositivos e servidores de rede sob alto acesso simultâneo e condições de alta carga, e melhorar o poder de processamento, rendimento e disponibilidade do sistema. Ao alocar automaticamente o tráfego de solicitação para diversas unidades operacionais (como servidores Web, servidores FTP, servidores de aplicativos chave corporativos, etc.) para concluir tarefas em conjunto, isso evita a sobrecarga de um único dispositivo de servidor e reduz o risco de falha do sistema.

A tecnologia de balanceamento de carga pode efetivamente melhorar a utilização dos equipamentos de rede, reduzir os custos de investimento em hardware e garantir que os usuários desfrutem de alta qualidade de serviço e velocidade de resposta. Em aplicações reais, o balanceamento de carga geralmente é usado nos seguintes cenários:

Alto acesso simultâneo: Quando um site, aplicativo ou serviço é acessado por um grande número de usuários ao mesmo tempo, o balanceamento de carga pode distribuir solicitações para vários servidores para garantir que a carga de cada servidor seja moderada e evitar a sobrecarga de um dos servidores .

Processamento de alta carga: para tarefas de computação intensiva ou tarefas de processamento de dados, o balanceamento de carga pode alocar tarefas a vários servidores para aumentar a velocidade geral de processamento e reduzir o tempo de conclusão da tarefa.

Recuperação de falhas de servidor: quando um servidor falha, o balanceamento de carga pode removê-lo automaticamente da fila de serviço e distribuir solicitações para outros servidores em operação normal para garantir a continuidade e estabilidade do serviço.

O que é um balanceador de carga

Um balanceador de carga é um dispositivo de otimização de rede usado para distribuir carga entre vários servidores ou links de rede para melhorar a confiabilidade, disponibilidade e desempenho do sistema. Os balanceadores de carga podem resolver com eficácia problemas de sobrecarga de servidor ou link de rede e garantir que as solicitações do usuário possam ser respondidas em tempo hábil, melhorando assim a experiência do usuário.

Os balanceadores de carga podem distribuir o tráfego de acordo com diferentes estratégias, como Round Robin, Least Connections e Source IP Hash. Além disso, o balanceador de carga também possui outros recursos, como comutação de aplicativos, persistência de sessão, monitoramento de estado, tradução inteligente de endereços de rede (NAT), resposta de persistência geral (GSR), tratamento de erros, otimização de TCP, etc. Alguns balanceadores de carga também integram funções de firewall, filtragem de pacotes e proteção contra ataques.

Um balanceador de carga pode ser implementado entre o servidor e o link da Internet ou pode ser implementado como dois adaptadores de rede. Em uma estrutura de rede enorme, o uso de servidores cluster pode causar problemas de tráfego e carga, por isso a tecnologia de balanceamento de carga surgiu conforme os tempos exigem. Os balanceadores de carga desempenham um papel importante no gerenciamento de rede, concentrando-se em áreas da rede que precisam de otimização e melhoria.

Os balanceadores de carga distribuem solicitações recebidas para recursos de computação, como servidores de aplicativos e bancos de dados. Em ambos os casos, o balanceador de carga retorna a resposta do recurso de computação para o cliente apropriado. A utilidade de um balanceador de carga é:

  • Evite que solicitações sejam enviadas para servidores ruins
  • Evite a sobrecarga de recursos
  • Ajude a eliminar pontos únicos de falha

Os balanceadores de carga podem ser implementados via hardware (caro) ou software como o HAProxy. Os benefícios adicionais incluem:

É comum configurar  vários balanceadores de carga no modo de espera  ou  de trabalho duplo para evitar falhas.

Os balanceadores de carga podem rotear o tráfego de diversas maneiras:

  • aleatório
  • carga mínima
  • Sessão/cookie
  • Agendamento round robin ou algoritmo de agendamento round robin ponderado
  • Balanceamento de carga da camada 4
  • Balanceamento de carga da camada 7

Balanceamento de carga da camada 4

O balanceamento de carga da camada 4 determina como distribuir solicitações com base nas informações de monitoramento da camada de transporte . Normalmente, isso envolve o endereço IP de origem, destino e porta no cabeçalho da solicitação, mas não o conteúdo do pacote. O balanceamento de carga da camada 4 executa a tradução de endereços de rede (NAT) para encaminhar pacotes de rede para servidores upstream.

Balanceador de carga da camada 7

Um balanceador de carga de sete camadas monitora a camada de aplicação para decidir como distribuir as solicitações. Isso envolve o conteúdo do cabeçalho da solicitação, mensagens e cookies. O balanceador de carga da Camada 7 encerra o tráfego de rede, lê a mensagem, toma uma decisão de balanceamento de carga e a entrega a um servidor específico. Por exemplo, um balanceador de carga de Camada 7 pode conectar o tráfego de vídeo diretamente ao servidor que hospeda o vídeo, ao mesmo tempo que direciona o tráfego de cobrança de usuário mais sensível para um servidor mais seguro.

À custa da flexibilidade, o balanceamento de carga de quatro camadas consome menos tempo e recursos computacionais do que o balanceamento de carga de sete camadas, embora isso tenha pouco impacto no desempenho do hardware moderno.

Expansão horizontal

Os balanceadores de carga também ajudam no dimensionamento horizontal, melhorando o desempenho e a disponibilidade. Usar hardware comum é mais econômico e oferece maior disponibilidade do que escalar verticalmente hardware mais caro em uma única peça de hardware. É mais fácil recrutar talentos para hardware comercial do que recrutar talentos para sistemas empresariais específicos.

Desvantagens da escala horizontal

  • O escalonamento horizontal introduz complexidade e envolve replicação de servidor
    • Os servidores devem ser sem estado: eles também não devem conter dados relacionados ao usuário, como sessões ou fotos de perfil.
    • As sessões podem ser armazenadas centralmente em um banco de dados ou cache persistente
  • Os servidores downstream, como caches e bancos de dados, precisam ser dimensionados com os servidores upstream para lidar com mais conexões simultâneas.

Desvantagens dos balanceadores de carga

  • Se não forem configurados recursos suficientes ou se estiverem configurados incorretamente, o balanceador de carga poderá se tornar um gargalo de desempenho.
  • Os balanceadores de carga foram introduzidos para ajudar a eliminar pontos únicos de falha, mas resultaram em complexidade adicional.
  • Um único balanceador de carga cria um único ponto de falha, mas a configuração de vários balanceadores de carga adiciona ainda mais complexidade.

 

Proxy reverso (servidor web)

Fonte: Wikipédia

O que é um proxy reverso

Um proxy reverso é um servidor web que pode chamar serviços internos centralmente e fornecer uma interface unificada para clientes públicos. A solicitação do cliente é primeiro encaminhada pelo servidor proxy reverso para o servidor que pode responder à solicitação e, em seguida, o proxy retorna o resultado da resposta do servidor ao cliente.

Benefícios do proxy reverso

  • Aumente a segurança 
  • Melhore a escalabilidade e a flexibilidade 
  • Encerre a sessão SSL localmente 
  • compressão 
  • esconderijo 
  • conteúdo estático 
    • HTML/CSS/JS
    • foto
    • vídeo
    • etc.

Balanceador de carga e proxy reverso

  • A implantação de um balanceador de carga é muito útil quando você tem vários servidores. Normalmente, um balanceador de carga roteia o tráfego para um conjunto de servidores com a mesma funcionalidade.
  • Mesmo quando há apenas um servidor web ou servidor de aplicativos, um proxy reverso é útil. Você pode consultar os benefícios apresentados na seção anterior.
  • Soluções como NGINX e HAProxy podem oferecer suporte ao proxy reverso da Camada 7 e ao balanceamento de carga.

Desvantagens do proxy reverso

  • A introdução de um proxy reverso aumentará a complexidade do sistema.
  • Um único servidor proxy reverso ainda pode ser um ponto único de falha, e a configuração de vários servidores proxy reverso (como failover ) aumentará ainda mais a complexidade.

Acho que você gosta

Origin blog.csdn.net/u013379032/article/details/132736087
Recomendado
Clasificación