Quais são os desafios na criação de um aplicativo da web escalonável em tempo real?

5

Estou pesquisando aplicativos da Web em tempo real usando websockets e node.js. Estou interessado em ver quais são alguns desafios técnicos com o dimensionamento de tal configuração.

Um desses problemas que eu ouvi é que cada soquete requer um descritor de arquivo Unix, e epoll / select leva tempo linear ao número de descritores de arquivos abertos.

Alguém tem outras ideias sobre dimensionamento?

    
por Sridatta Thatipamala 06.03.2011 / 11:00
fonte

1 resposta

3

Primeiras coisas primeiro:

Existem duas abordagens para todos os servidores http, thread / process ou assíncrono e persistente.

O Twitter é um exemplo do que evitar na minha opinião - falhar com a baleia e tudo. Apesar de estarem melhorando agora, parece que o front-end ainda não é persistente ... você pode ler sobre a sua evolução aqui: link

A primeira coisa que você precisará reconhecer é que você não conseguirá realizar nada escalonável em tempo real sem a persistência TRUE. Como em um main-loop ou event-loop. Se você tem alguma quantidade considerável de código, PHP, Perl, etc - deve re-executar e recarregar todos os seus dados, variáveis, etc cada pedido - embora seja bom para exibir o seu blog Wordpress, isso não vai funcionar no tipo de aplicativo que você está descrevendo.

Se você tiver servidores suficientes e dinheiro suficiente, poderá usar o apache2 / httpd para veicular todo o conteúdo em tempo real desejado. Mas se você for como o resto de nós, a abordagem assíncrona provavelmente funcionará melhor para você.

Tecnologias existentes:

Tornado - O Facebook adotou o servidor da Web Tornado para lidar com notificações de eventos / atualizações de feed. (Eu não estou defendendo isso, apenas dando um exemplo de como lidar com a solução em tempo real.

libevent

Se você quiser escrever o tipo de servidores http que a amazon.com está projetando, consulte: link

torcido

Se você tem um pouco menos de tempo em suas mãos, eu sugeriria o framework torcido do Python. Usamos Twisted no meu trabalho para muitas coisas.

O

link é executado no Twisted - isso é o que acontece com a web em tempo real.

Veja aqui: link

    
por 08.03.2011 / 23:08
fonte