¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Como Escalar WebSockets para Alta Concurrencia: Estratégias e Desafios

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 12 Vistas
0
Cargando...

Sobre o artigo


Escalar WebSockets para alta concorrência apresenta desafios únicos. Esta análise explora esses desafios, discute limitações de escalabilidade vertical e horizontal, e introduz uma estratégia de otimização através de:




  • Eliminação de buffers

  • Atualização de cópia zero

  • Netpoll




Essas otimizações reduzem o uso de memória mais de 10 vezes , tornando-o viável para conexões WebSocket em grande escala.

Escalando WebSockets corretamente


As interações em tempo real são o coração da web moderna. E entregá-las para audiências pequenas é relativamente fácil, graças a protocolos como WebSockets. Existem 2 tipos principais de comunicação:


Comunicação Unidirecional:




  • Atualizações de esportes ao vivo

  • Painéis de controle em tempo real, transmissões

  • Rastreamento de localização...


Comunicação Bidirecional:




  • Chat

  • Eventos virtuais e salas de aula virtuais

  • Pesquisas e questionários...


Mas há um desafio...


...e é escalar sua solução para lidar com Dezenas de Milhares de usuários/conexões e mais.



Desafios em Escalar WebSockets vs. HTTP


Escalar WebSockets é significativamente mais complexo do que escalar HTTP devido às suas naturezas fundamentalmente diferentes:


HTTP é sem estado e direto. Cada solicitação é autocontida, facilitando sua distribuição em vários servidores através de balanceadores de carga. HTTP serve os mesmos dados a cada cliente e os esquece rapidamente.


WebSockets, por outro lado, são persistentes e com estado. Escalá-los envolve dois desafios principais:


Manter Conexões Persistentes : Os WebSockets dependem de conexões persistentes entre servidores e potencialmente um grande número de clientes. Isso requer uma gestão cuidadosa e alocação de recursos.


Sincronização de Dados : Muitas vezes é necessário compartilhar estado entre clientes/servidores, criando um desafio de sincronização complexo. Por exemplo, em um aplicativo de chat, as mensagens precisam ser compartilhadas entre todos os participantes.



Escalabilidade Horizontal vs Vertical


Escalabilidade Vertical: Aumentar a capacidade de um único servidor através da atualização de seus componentes de hardware como CPU, RAM ou armazenamento.

Escalabilidade Horizontal: Ampliar a capacidade de um sistema adicionando mais servidores ou nós para distribuir a carga de trabalho, comumente usado em computação em nuvem para escalabilidade.


Mas, por que é difícil escalar os WebSockets?

O principal desafio é que as conexões com seu servidor WebSocket devem ser persistentes. E mesmo depois de ter escalado seus nós de servidor tanto vertical quanto horizontalmente, você também precisa fornecer uma solução para compartilhar dados entre os nós.

Problemas de Escalabilidade Vertical


Escalar verticalmente tem seus prós e contras, como vimos. Mas há algo específico nos WebSockets que torna a escalabilidade vertical uma má escolha?

Limitações do SO - Descritores de arquivos - Cada conexão TCP usa um descritor de arquivo. Os sistemas operacionais limitam a quantidade de descritores de arquivo que podem ser abertos de uma vez, e cada processo em execução também pode ter um limite. Quando você tem um grande número de conexões TCP abertas, pode atingir esses limites, o que pode resultar em rejeição de novas conexões ou outros problemas.


Maior possibilidade de tempo de inatividade - A menos que você tenha um servidor de backup que possa lidar com operações e solicitações, você precisará de um tempo

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

Sin respuestas

No hay respuestas para mostrar No hay respuestas para mostrar Se el primero en responder

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?