Ho clienti che devono connettersi tutti a un singolo processo del server. Sto usando la scoperta UDP per i client per trovare il server. Ho il client e il server di scambiare l'indirizzo IP e il numero di porta, in modo che una connessione TCP/IP possa essere stabilita dopo il completamento del rilevamento. In questo modo le dimensioni del pacchetto sono ridotte. Vedo che ciò potrebbe essere fatto in due modi usando UDP:Rilevazione server UDP - I client devono inviare i multicast per trovare il server o il server deve inviare un beacon regolare?
- Ogni client invia il proprio messaggio multicast alla ricerca del server, a cui il server risponde. Il client può ripetere l'invio di questo messaggio multicast a intervalli regolari (nel caso in cui il server sia inattivo) finché il server non risponde.
- Il server invia un messaggio di segnalazione multicast a intervalli regolari. I client si iscrivono al gruppo multicast e in questo modo ricevono il messaggio multicast del server e completano la scoperta.
In 1. se ci sono molti client allora inizialmente ci sarebbero molti messaggi multicast trasmessi (uno da ciascun client). Solo il server si iscriverebbe e riceverebbe i messaggi multicast dai client. Una volta che il server ha risposto al client, il client cessa di inviare il messaggio multicast. Una volta che tutti i client hanno completato la scoperta del server, non vengono trasmessi ulteriori messaggi multicast sulla rete. Se, tuttavia, il server non funziona, ogni client invierà un messaggio di messaggi multicast a intervalli fino a quando il server non verrà ripristinato e potrà rispondere.
In 2. solo il server invia un messaggio di segnalazione multicast a intervalli regolari. Questo messaggio finirebbe per essere indirizzato a tutti i client che sono iscritti al gruppo multicast. Una volta che i client ricevono il pacchetto, il socket di ascolto UDP del client viene chiuso e non vengono più sottoscritti al gruppo multicast. Tuttavia, il server deve continuare a inviare il beacon multicast, in modo che i nuovi client possano scoprirlo. Continuerebbe a inviare il segnale a intervalli regolari, indipendentemente dal fatto che alcuni clienti siano fuori dalla loro richiesta di scoperta o meno.
Quindi, vedo pro e contro in entrambi i casi. Mi sembra che il # 1 provocherebbe inizialmente un carico più pesante, ma questo carico alla fine si riduce a zero. In # 2 il server continuerà a inviare un faro per sempre.
UDP e multicast sono un argomento abbastanza nuovo per me, quindi sono interessato a scoprire quale sarebbe l'approccio preferito e che comporterebbe un carico di rete inferiore.
Avete deciso esplicitamente di non utilizzare i meccanismi di rilevamento dei servizi standard? – Duck
Quando si definiscono meccanismi di individuazione dei servizi standard, è possibile chiarire che cosa si ritiene essere questo. Sono in procinto di "scoprire" quali sono le mie opzioni e l'approccio migliore da adottare. – Elan