Domanda

E 'una buona idea quella di utilizzare i socket per inviare i dati tra due server, o dovrei usare qualcosa come MQ per lo spostamento dei dati.

Le mie domande: sono prese affidabili, se ho bisogno di una sola volta / consegna garantita dei dati

?

Ci sono altre soluzioni?

Grazie.

È stato utile?

Soluzione

Sockets sono un'API livello di applicazione per l'esecuzione di comunicazione di rete. L'affidabilità di prese dipende dal protocollo di rete selezionata quando si crea la presa. Se si seleziona il protocollo TCP / IP, si otterrà il trasferimento "affidabile" ... fino ad un limite. Se si seleziona UDP / IP si otterrà il trasferimento "non affidabile".

Come già detto in altre risposte, TCP assicura che non si perde o danneggiare i dati fino a un punto:

  1. se v'è una rete abbastanza a lungo interruzione, o il mittente o ricevente muore una connessione TCP / IP si romperà e si perde i dati a meno che non adottare misure per riavviare il connessione.
  2. se v'è una rete     la corruzione dei dati di livello, c'è un     piccola probabilità che non sarà     rilevati dai checksum.

Per i livelli più elevati di garanzie di affidabilità che il protocollo TCP / IP offre, è necessario implementare checksum più sensibile e meccanismi di consegna garantiti sopra la parte superiore del livello di rete basato su socket dell'applicazione. Oppure utilizzare un prodotto di accodamento messaggio che fa difficile il lavoro per voi.

Quindi la risposta alla tua domanda è che dipende da come si usa Sockets, e su quale livello di affidabilità il sistema richiede.

Altri suggerimenti

prese di corrente sono affidabili come si effettua l'implementazione, e basata su l'hardware sottostante. Se non si desidera che il fastidio di fare un servizio di consegna garantita (in quali condizioni? 100% non sarà mai accadere), un sistema di coda di messaggi è una buona scommessa. La coda di messaggi avrà attuato tutta la persistenza, in coda, tentativi, ecc, che si avrebbe bisogno di attuare da soli se si andava con le prese standard.

Probabilmente si dovrebbe usare un MQ se avete bisogno di consegna garantita, non importa quello che succede (come se l'altra parte va offline per manutenzione) e non si vuole scrivere tutta la logica da soli. Socket è quello che si utilizza per connettersi a un altro partito, non importa se quel partito è il MQ o il destinatario finale del messaggio.

Socket sono affidabili dal momento che ogni comunicazione è fatta su di esso, tra cui MQ.

Ma si consiglia di aggiungere un po 'di consegna GARANTITA con MQ per migliorare l'affidabilità della vostra applicazione. Che cos'è? consegna GARANTITA assicura che il messaggio viene elaborato, almeno una volta, e non più di una volta, da parte del consumatore. il consumatore è spento? il produttore è spento? il server MQ è spento? i crash del disco? grazie alla MQ, nessun messaggio andrà perso, qualunque cosa accada (a condizione che l'amministratore conosce il suo lavoro). In aggiunta a ciò, se si riavvia il consumatore, nessun messaggio sarà processata due volte. Quale può essere importante se i messaggi contengono milioni di dollari trasferimenti. Ma non garantiamo che il messaggio viene elaborato in una quantità raisonnable di tempo. e il tempo di elaborazione è a volte più importante che la consegna DI GARANZIA, a seconda dell'applicazione in uso.

È a voi scegliere il modo migliore per comunicare tra i server a seconda delle esigenze. consegna di consegna GARANTITA ha sia dei costi finanziari e delle prestazioni, per cui deve essere utilizzato solo se davvero necessario (milioni di dollari tranfers per esempio).

Per la maggior parte delle applicazioni è possibile ottenere qualcosa di soddisfacente solo da riprovare i messaggi quando poi falliscono. Ma questa non è una vera e propria consegna una volta sola DI GARANZIA. non cercare di attuare da soli, è una roba molto difficile che solo pochi sono in grado di raggiungere. E 'da considerare useles redevelopping un software complicato come MQ o Apache AQ.

La speranza che aiuta.

  • Jeb

Sockets è il meccanismo prima per il trasferimento dei dati. Tutto il resto è implementato in cima a questo. Nella modello di rete OSI appartengono allo strato 4. Sebbene attuano affidabile end-to-end collegamento, essi sono raramente utilizzato come protocollo finale. È quasi sempre necessario implementare un livello di applicazione. Ciò che questo sarebbe dipende dalla vostra applicazione (fare il necessario per trasferire i file o semplicemente inviare messaggi) e l'infrastruttura di rete.

Se si utilizza un socket di flusso , il protocollo TCP assicura che i dati non perdersi nella trasmissione ed è improbabile che ottenere danneggiato (anche se si deve decidere se i suoi checksum a 16 bit sono sufficienti o avete bisogno di un meccanismo di checksum app-layer).

Cosa MQ sistemi forniscono, e ciò che si può o non essere necessario è a livello di applicazione transazione di tipo di affidabilità, cioè la capacità di garantire la consegna anche a fronte di guasti hardware o software intermittenti.

A seconda del tipo di dati di un semplice servizio web può essere la soluzione più rapida. Sono relativamente facili da installare e testare. Anche se per alcuni esempi specifici che avevo bisogno di sapere che tipo di dati e l'ambiente si sta eseguendo.

Dipende largly dal tipo di applicazione che si sta sviluppando. Esso si sta scrivendo un programma in cui è necessario risposta o ACK del messaggio inviato poi socket TCP sono buone. Ma, se si implementa una sorta di workflow di scenario, è necessario utilizzare Message code.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top