Pregunta

¿Es una buena idea utilizar sockets para enviar datos entre dos servidores, o debería usar algo como MQ para mover datos.

Mis preguntas son: tomas fiable, si necesito una sola vez / entrega asegurada de los datos

?

¿Hay otras soluciones?

Gracias.

¿Fue útil?

Solución

Zócalos son una API de nivel de aplicación para la realización de la comunicación de red. La fiabilidad de las tomas depende del protocolo de red que se selecciona cuando se crea el zócalo. Si selecciona TCP / IP, obtendrá la transferencia "fiable" ... hasta un límite. Si selecciona UDP / IP obtendrá transferencia de "poco fiable".

Como se ha dicho en otras respuestas, TCP garantiza que no se pierde o corromper los datos hasta un punto:

  1. si hay una red lo suficientemente larga corte de luz, o el remitente o el receptor muere una conexión TCP / IP se romperá y perderá datos a menos que tomar pasos para reiniciar el conexión.
  2. si hay una red     la corrupción de datos de nivel, hay una     pequeña probabilidad de que no será     detectado por las sumas de comprobación.

Para los niveles más altos de garantías de fiabilidad que TCP / IP proporciona, es necesario implementar la suma de comprobación más sensible y mecanismos de entrega garantizados sobre la parte superior de la capa de red basada en el zócalo de la aplicación. O utilizar un producto de colas de mensajes que hace difícil el trabajo por usted.

Así que la respuesta a su pregunta es que depende de cómo se utilice sockets, y en qué nivel de fiabilidad requiere su sistema.

Otros consejos

Los sockets son tan fiables como usted hace su puesta en práctica, y se basa en el hardware subyacente. Si no desea que la molestia de hacer un servicio de entrega garantizada (en qué condiciones? 100% nunca va a suceder), un sistema de cola de mensajes es una buena apuesta. La cola de mensajes se ha aplicado el conjunto de la persistencia, la cola, reintentos, etc, que usted tendría que aplicar a sí mismo si se fue con tomas estándar.

Probablemente debería utilizar un MQ si necesita entrega garantizada pase lo que pase (como si la otra parte se queda sin conexión para mantenimiento) y no querer escribir toda la lógica sí mismo. Sockets es lo que se utiliza para conectarse a otro partido, no importa si esa parte es la MQ o el destinatario final del mensaje.

Socket son fiables ya que cada comunicación se realiza en la parte superior de la misma, incluyendo MQ.

Sin embargo, es posible que desee añadir un poco de la entrega garanteed con MQ para mejorar la fiabilidad de su aplicación. ¿Qué es? entrega garanteed asegura que su mensaje se procesa al menos una vez, y no más de una vez, por el consumidor. el consumidor está apagado? el productor está apagado? el servidor MQ está apagado? los posibles fallos del disco? Gracias a MQ, se perderá ningún mensaje, pase lo que pase (siempre que el administrador conoce su trabajo). Además de eso, si reinicia el consumidor, ningún mensaje será procesado dos veces. Wich puede ser importante si los mensajes contienen millones de dólares transferencias. Sin embargo, no garantizamos que su mensaje es procesado en una cantidad raisonnable de tiempo. y el tiempo de procesamiento es a veces más importante que la entrega garanteed, dependiendo de su aplicación.

Es hasta usted para elegir la mejor manera de comunicarse entre los servidores en función de sus necesidades. entrega garanteed tiene tanto el costo financiero y el rendimiento, por lo que se va a utilizar sólo si es necesario realmente (millones de dólares traslados por ejemplo).

Para la mayoría de las aplicaciones se puede lograr algo satisfactorio solamente por reintentar sus mensajes cuando el entonces fallar. Pero eso no es verdadera entrega una sola vez garanteed. no trate de aplicar por sí mismo, es una materia muy difícil que sólo unos pocos son capaces de lograr. Es useles a considerar redevelopping un software tan complicado como MQ o Apache AQ.

Espero que ayude.

  • jeb

Zócalos es el mecanismo prima para la transferencia de datos. Todo lo demás se lleva a cabo en la parte superior de esta. En el modelo de red OSI que pertenecen a la capa 4. A pesar de que implementen de extremo a extremo fiable conexión, rara vez se utiliza como el protocolo final. Casi siempre se necesita para implementar una capa de aplicación. Lo que esto sería depende de su aplicación (hacer lo necesario para transferir archivos o simplemente enviar mensajes) y la infraestructura de red.

Si utiliza una toma de corriente , el protocolo TCP garantiza que los datos no se pierde en la transmisión y es poco probable que se dañan (aunque usted tiene que decidir si sus sumas de comprobación de 16 bits son suficientes o que necesitan un mecanismo de suma de comprobación aplicación de capas).

¿Qué MQ sistemas proporcionan, y lo que puede o no puede necesitar es a nivel de aplicación de tipo de transacción fiabilidad, es decir, la capacidad de garantizar la entrega incluso en la cara de los fallos de hardware o de software intermitentes.

En función del tipo de datos de un servicio web simple puede ser la solución más rápida. Son relativamente fáciles de configurar y probar. Aunque para algunos ejemplos específicos que había necesidad de saber qué tipo de datos y el entorno que se está ejecutando.

Depende largly del tipo de aplicación que se está desarrollando. Se está escribiendo un programa en el que necesita respuesta o acuse de recibo del mensaje enviado entonces sockets TCP son buenas. Pero, si está implementando algún tipo de flujo de trabajo del escenario, se debe utilizar colas de mensajes.

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