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.