PGM (Pragmatic General Multicast) è realizzabile per ottenere una trasmissione affidabile dei messaggi con IP multicast?

6

Ho un'applicazione server che distribuisce quotazioni di borsa a un numero di client sulla nostra rete interna. Con l'aumentare del numero di client, le connessioni unicast (TCP) tra il server e i client non vengono più ridimensionate. Quindi, ho cercato in multicast.

A causa dell'intrinseca inaffidabilità del multicast IP, ho cercato un multicast affidabile e ho trovato Pragmatic General Multicast (PGM) . Cose come la soppressione NAK, la correzione degli errori in avanti, ecc., Sembrano le cose di cui ho bisogno e dovrei implementare me stesso quando uso l'UDP grezzo.

Prima di convertire un'applicazione mission-critical in questo protocollo, ci sono un paio di domande:

  • Quanto è ampiamente utilizzato PGM? Non ci sono molti risultati su di esso su Stack Overflow , Server Fault o il nuovo Sito di scambio dello stack di Engineering Network . La RFC è del 2001 e un carta sul sito di Microsoft Research è del 2003. Perché non è già stato adottato come standard?

  • Quanto è praticabile l'implementazione Microsoft di PGM? The documentazione è estremamente sparsa e la maggior parte dei progetti che utilizzano PGM (ad esempio zeroMQ ) sembrano essere costruito su OpenPGM . Ma usare un'API socket fornita con il sistema operativo e che sono già familiare e che ha un buon supporto in Delphi e C # (le lingue che uso) sembra meglio che dover contare su librerie aggiuntive che devono essere costruite separatamente e avere il loro proprie dipendenze. Ci sono degli svantaggi di MS-PGM di cui dovrei essere a conoscenza?

  • Quali sono le alternative? Esistono altri protocolli che portano affidabilità alla programmazione multicast, ma ad es. consentire il riordino dei pacchetti? Questo non sarebbe un problema, ma in realtà una caratteristica, perché mi permetterebbe di continuare ad elaborare alcuni strumenti anche quando i pacchetti per gli altri sono stati persi.

posta PersonalNexus 06.08.2013 - 16:37
fonte

2 risposte

4

Direi che stai osservando un livello troppo basso. Dovresti guardare code di messaggi come ZeroMQ o altri per costruire quello che è noto come un bus di servizio. ZeroMQ e la maggior parte degli altri sistemi di code di messaggi dispongono di librerie client per le lingue e le piattaforme più diffuse. Le connessioni sono leggerissime e scalabili. Le code di messaggi supportano anche concetti come i canali che consentono ai clienti di "iscriversi" a argomenti che li interessano solo (ad esempio, specifici titoli azionari e simili). Questa funzionalità nota come Pub-Sub consente di ridurre il traffico di rete rispetto al multicast raw in quanto i messaggi vengono inviati solo ai clienti che si iscrivono a un argomento.

Spero che questo aiuti.

    
risposta data 06.08.2013 - 16:48
fonte
0

Dipende molto pesantemente dai requisiti di throughput / latenza. È possibile che PGM funzioni in modo affidabile (non garantito) ma si comporta in modo terribile quando ci si avvicina ai limiti della rete. Esistono meccanismi per controllare le tempeste multicast / gli abbonati lenti ecc ... ma non li ho mai visti funzionare nella pratica. Il modo in cui il sistema fallisce e la tendenza ad influenzare molti host (non solo quello che potrebbe aver avviato il problema) lo rende un incubo assoluto da gestire in un senso di supporto. Anche in ambienti a basso throughput, tutto ciò che serve è una scheda di rete 'lenta' per connettersi al canale MC sbagliato e ce l'hai. La maggior parte delle banche che hanno utilizzato il multicast sono state rimosse o sono impegnate a rimuoverla e a sostituirle con un migliore ridimensionamento dei sistemi basati su TCP. La ragione è pura e semplicemente che è inaffidabile e goffo.

Mi piacerebbe sapere quanti abbonati hai effettivamente per i tuoi dati. Sei assolutamente sicuro di non poter scalare? Se i tuoi requisiti di throughput sono elevati, puoi guardare i sistemi basati su hardware come Solace, una pulizia dello spazio dei nomi, più punti di distribuzione (come più server smartsockets - so che sono spazzatura, solo un esempio) o qualcosa del genere.

Eviterei MC a tutti i costi. Se finisci per usarlo, non lasciarlo da nessuna parte vicino ai desktop!

    
risposta data 03.07.2017 - 13:29
fonte

Leggi altre domande sui tag