Mam klientów, którzy muszą połączyć się z procesem na pojedynczym serwerze. Używam wykrywania UDP dla klientów, aby znaleźć serwer. Mam klienta i serwer wymieniają adres IP i numer portu, aby połączenie TCP/IP mogło zostać ustanowione po zakończeniu wykrywania. W ten sposób rozmiar pakietu jest mały. Widzę, że można to zrobić na jeden z dwóch sposobów: UDP:Wykrywanie serwerów UDP - czy klienci powinni wysyłać pakiety multiemisji, aby znaleźć serwer, czy serwer powinien wysyłać regularne sygnały nawigacyjne?
- Każdy klient wysyła własną wiadomość multiemisji w poszukiwaniu serwera, na który następnie odpowiada serwer. Klient może powtarzać wysyłanie tej wiadomości multiemisji w regularnych odstępach czasu (w przypadku, gdy serwer jest wyłączony), dopóki serwer nie odpowie.
- Serwer wysyła wielokierunkowy sygnał ostrzegawczy w regularnych odstępach czasu. Klienci subskrybują grupę multiemisji iw ten sposób odbierają komunikat multiemisji serwera i uzupełniają wykrywanie.
W 1. Jeśli jest wielu klientów, wówczas początkowo byłoby wiele wiadomości multiemisji wysyłanych (po jednym z każdego klienta). Tylko serwer będzie subskrybować i odbierać wiadomości multiemisji od klientów. Gdy serwer odpowie na klienta, klient przestaje wysyłać wiadomość multiemisji. Po zakończeniu wykrywania serwera przez wszystkich klientów nie są przesyłane żadne dalsze wiadomości multiemisji w sieci. Jeśli jednak serwer jest wyłączony, wówczas każdy klient będzie wysyłać sygnał nawigacyjny multiemisji w odstępach czasu, dopóki serwer nie zostanie utworzony i może odpowiedzieć.
W 2. tylko serwer wysyłałby wielokierunkowy sygnał ostrzegawczy w regularnych odstępach czasu. Ta wiadomość zostanie ostatecznie przekierowana do wszystkich klientów, którzy zasubskrybowali grupę multiemisji. Gdy klienci otrzymają pakiet, gniazdo nasłuchiwania UDP klienta zostanie zamknięte i nie będą już subskrybować grupy multiemisji. Jednak serwer musi nadal wysyłać sygnał multicast, aby nowi klienci mogli go wykryć. Nadal będzie wysyłał sygnał nawigacyjny w regularnych odstępach czasu, niezależnie od tego, czy jakikolwiek klient jest zmuszony do jego odkrycia, czy nie.
Widzę więc zalety i wady w obie strony. Wydaje mi się, że # 1 spowodowałoby początkowo większe obciążenie, ale obciążenie to ostatecznie spadnie do zera. W punkcie 2 serwer będzie wysyłał na zawsze sygnał nawigacyjny.
UDP i multicast to dla mnie całkiem nowy temat, dlatego jestem zainteresowany ustaleniem, które z nich byłoby preferowanym podejściem, a które spowodowałoby mniejsze obciążenie sieci.
Czy wyraźnie zdecydowałeś się nie używać standardowych mechanizmów wykrywania usług? – Duck
Kiedy mówisz o standardowych mechanizmach wykrywania usług, możesz wyjaśnić, co uważasz za takie. Jestem w trakcie "odkrywania" moich opcji i najlepszego podejścia. – Elan