Pergunta

está fluindo uma opção viável? haverá uma diferença de desempenho na extremidade do servidor, dependendo de qual eu escolher? é um melhor que o outro para este caso?

Eu estou trabalhando em um aplicativo GWT com o Tomcat em execução no servidor final. Para entender minhas necessidades, imagine atualizar os preços das ações de várias unidades populacionais ao mesmo tempo.

Foi útil?

Solução

Você quer que o processo seja client ou servidor-driven? Em outras palavras, você quer empurrar novos dados para os clientes assim que ele estiver disponível, ou prefere que os clientes solicitam novos dados sempre que entenderem, apesar de que pode não ser uma vez / segundo? Qual é a probabilidade de que o cliente será capaz de ficar em torno de esperar por uma resposta? Mesmo que você espera que os eventos a ocorrer uma vez / segundo, quanto tempo demora entre um pedido de um cliente e o retorno do servidor? Se for mais de um segundo, eu espero que você inclinar-se para empurrar os eventos para os clientes, embora o contrário, eu esperaria de votação ficar bem. Se a resposta demora mais do que o intervalo, em seguida, você está essencialmente streaming de qualquer maneira, uma vez que há um novo evento pronto no momento em que o cliente recebe o último, para que o cliente poderia essencialmente poll continuamente e sempre receber eventos - neste caso, streaming os dados seria realmente mais leve, uma vez que você está removendo a ligação / negociação sobrecarga do processo.

Eu suspeito que a carga do servidor a ser maior para um (pull) subscrição baseada no cliente, em vez de uma configuração de transmissão, uma vez que o cliente teria que re-negociar a conexão de cada vez, em vez de deixar a abrir conexão, mas cada conexão aberta em um modelo de streaming exigiria recursos do servidor também. Depende do que o trade-off entre o quão agressivo o processo de negociação é vs. quanta memória / processamento é necessário para cada conexão aberta. Não sou especialista, no entanto, portanto, pode haver outros fatores.

UPDATE: esse cara fala sobre o trade- offs entre a longo polling e streaming, e ele parece dizer que com HTTP / 1.1, o processo de conexão re-negociação é trivial, por isso é não tanto de um problema.

Outras dicas

Realmente não importa. A sobrecarga da conexão re-negociação é tão magro com HTTP1.1, você não vai notar nenhuma significativa diferenças de desempenho de uma forma ou de outra.

Os benefícios de longo polling são compatibilidade e confiabilidade -. Problemas com proxies, portas, detecção de desconexões, etc

Os benefícios do "verdadeiro" de streaming seria potencialmente ser reduzido em cima, mas como já mencionado, este benefício é muito, muito menos do que ele é feito para ser.

Pessoalmente, acho um servidor cometa bem concebido para ser a melhor solução para um grande número de atualizações e / ou servidor-push.

Certamente, se você estiver olhando para enviar dados, streaming parecem proporcionar um melhor desempenho, se o servidor pode lidar com o número esperado de conexões contínuas. Mas há outra questão que você não resolver: Você internet ou intranet? Fluindo tem sido relatada a ter alguns problemas em todo proxies, tanto quanto você esperaria. Assim, para uma solução de uso geral, você provavelmente seria melhor servido por muito tempo poll -. Para uma intranet, onde você entender a infraestrutura de rede, streaming é bastante provável uma solução desempenho mais simples, melhor para você

O StreamHub GWT Comet Adapter foi concebido exatamente para este cenário de transmissão de cotações de ações. Exemplo aqui: GWT Transmissão da Cotações . Ele atualiza os preços das ações de várias unidades populacionais simultaneamente. Eu acho que o baixo implementação é Comet que é essencialmente de streaming via HTTP.

Edit: Ele usa uma técnica diferente para cada browser. Para citar o site:

Existem vários diferentes subjacente as técnicas usadas para implementar Comet Incluindo Invisível iFrame, XMLHttpRequest / Script longo Polling, e encaixes, tais como o Flash incorporado. A introdução do HTML 5 WebSockets para futuros navegadores proporcionará uma mecanismo alternativo para HTTP Transmissão. StreamHub usa um "melhor ajuste" aproximar utilizando o mais alto desempenho e a técnica de confiança para cada browser.

Transmissão será mais rápido porque os dados só atravessa o fio de uma maneira. Com votação, a latência é pelo menos duas vezes.

Polling é mais resistente a falhas de rede, uma vez que não depende de uma conexão que está sendo mantido aberto.

Eu iria para votação apenas para a robustez.

Para os preços das ações ao vivo Eu absolutamente manter o aberto conexão e garantir alerta user / religação de desconexão.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top