Sto lavorando a un'applicazione distribuita per un corso di specializzazione che sto prendendo. C'è stata molta discussione sull'implementazione di un modo per mantenere gli stati di salute della connessione peer. Pensa Gossip . Uno dei temi principali di questo progetto è stato il modo in cui dovremmo fare affidamento sulla comunicazione UDP per superare l'utilizzo "eccessivo" della larghezza di banda del TCP (per mantenere questi elenchi dello stato della connessione tra pari).
Non so se sono d'accordo con questa posizione. Per me, il vantaggio principale del TCP non è l'affidabilità della connessione, ma il controllo della congestione che offre. Sembra più probabile che le connessioni TCP tra host siano effettivamente più leggere di UDP perché ottieni affidabilità, controllo della congestione e notifiche di errori di connessione incorporate.
Uno scenario potenziale che potrebbe fare un uso adeguato dei pacchetti UDP è un meccanismo di backup per rilevare errori di collegamento (che è quello che ho iniziato a implementare, sebbene non sia positivo, questo è l'approccio giusto). L'idea è che la nostra connessione primaria ai peer è tramite un socket TCP, con il rilevamento degli errori integrato, ma se dovessimo perdere il messaggio di disconnessione da questo link, potremmo ricorrere a una lista di gossipy-peer che abbiamo ricevuto via UDP da altri host.
Sto guardando tutto questo in modo sbagliato? Tieni presente che questa domanda è specifica per gestire le connessioni peer e gli errori in un'applicazione distribuita, su più nodi.