Pregunta

se transmite en una opción viable? ¿habrá una diferencia de rendimiento en el extremo del servidor en función de la cual elegir? es uno mejor que el otro para este caso?

Estoy trabajando en una aplicación GWT con Tomcat que se ejecuta en el servidor final. Para entender mis necesidades, imaginar la actualización de los precios de las acciones de varias poblaciones al mismo tiempo.

¿Fue útil?

Solución

¿Quieres que el proceso sea cliente-servidor o impulsada? En otras palabras, ¿quiere impulsar nuevos datos a los clientes tan pronto como esté disponible, o prefiere que los clientes solicitar nuevos datos cuando lo consideren necesario, a pesar de que podría no ser una vez / segundo? ¿Cuál es el likelyhood que el cliente podrá quedarse para esperar una respuesta? A pesar de que espera que los eventos que ocurren una vez / segundo, ¿cuánto tiempo se tarda entre una solicitud de un cliente y el retorno desde el servidor? Si se trata de más de un segundo, yo esperaría que usted se incline hacia empujando los eventos a los clientes, aunque al revés, yo esperaría de votación a estar bien. Si la respuesta tarda más que el intervalo, entonces básicamente estás streaming de todos modos, ya que hay un nuevo evento listo para el momento en que el cliente recibe el último, por lo que el cliente podría esencialmente sondear continuamente y siempre recibir eventos - en este caso, el streaming los datos en realidad sería más ligero, ya que usted está eliminando la sobrecarga conexión / negociación del proceso.

Me sospechar que la carga del servidor a ser mayor para una suscripción basada en el cliente (pull), en lugar de una configuración de streaming, ya que el cliente tendría que volver a negociar la conexión cada vez, en lugar de dejar abierta una conexión, pero cada conexión abierta en un modelo de streaming requeriría recursos del servidor también. Depende de lo que la disyuntiva es entre la agresividad de su proceso de negociación es la forma en contra se requiere mucha memoria / procesamiento para cada conexión abierta. No soy un experto, sin embargo, lo que puede haber otros factores.

ACTUALIZACIÓN: este chico habla de la el comercio compensaciones entre largo de votación y transmisión, y que parece decir que con HTTP / 1.1, el proceso de conexión renegociación es trivial, por lo que no es como mucho de un problema.

Otros consejos

En realidad no importa. La sobrecarga de conexión renegociación es tan delgado con HTTP1.1, usted no notará ninguna significativa las diferencias de rendimiento de una manera u otra.

Los beneficios de largo de votación son compatibilidad y fiabilidad. - no hay problemas con servidores proxy, puertos, se desconecta de detección, etc.

Los beneficios de la transmisión de la "verdadera" potencialmente serían reducidos gastos generales, pero como ya se ha mencionado, este beneficio es mucho, mucho menos de lo que ha hecho para ser.

En lo personal, encuentro un servidor cometa bien diseñado para ser la mejor solución para un gran número de actualizaciones y / o servidor push.

Por supuesto, si usted está buscando para enviar datos, la transmisión parece proporcionar un mejor rendimiento, si su servidor puede manejar el número esperado de conexiones continuas. Pero hay otro problema que no se ocupan de: ¿Estás Internet o de una intranet? Transmisión ha informado a tener algunos problemas a través de servidores proxy, tanto como era de esperar. Así que para una solución de propósito general, que probablemente sería mejor servido por una larga encuesta - para una intranet, donde se entiende la infraestructura de red, streaming es bastante probable que una mejor solución más simple, el rendimiento para usted

.

El href="http://code.google.com/p/gwt-comet-streamhub/" rel="nofollow noreferrer"> StreamHub adaptador Comet GWT fue diseñado exactamente para este escenario de los flujos de cotizaciones bursátiles. Ejemplo aquí: Transmisión de GWT Cotizaciones . Se actualiza los precios de las acciones de varias poblaciones al mismo tiempo. Creo que la aplicación debajo es el cometa, que se transmite esencialmente a través de HTTP.

Editar: Se utiliza una técnica diferente para cada navegador. Para citar el sitio web:

  

Hay varios diferentes subyacente   técnicas utilizadas para implementar Comet   incluyendo Hidden iFrame,   XMLHttpRequest / script largo de sondeo,   y los plugins como Flash incrustado.   La introducción de HTML 5 WebSockets   para futuros navegadores proporcionará una   mecanismo alternativo para HTTP   Transmisión. StreamHub utiliza un "mejor ajuste"   enfoque que utiliza la mas potente   y una técnica fiable para cada   navegador.

Transmisión será más rápido ya que los datos sólo se cruza el hilo de una manera. Con el sondeo, la latencia es al menos dos veces.

El sondeo es más resistente a las caídas de la red, ya que no se basa en una conexión que se mantiene abierta.

Me gustaría ir para el sondeo sólo para la robustez.

Para precios de las acciones en vivo Me gustaría mantener absolutamente la conexión abierta, y garantizar la facilidad de alerta / reconexión de desconexión.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top