Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Każdy węzeł w siatce publikuje informacje o punkcie końcowym w usłudze rozpoznawania Register
nazw za pośrednictwem funkcji. Usługa rozpoznawania przechowuje te informacje jako rekord rejestracji. Ten rekord zawiera unikatowy identyfikator (RegistrationID) i informacje o punkcie końcowym (PeerNodeAddress) dla węzła.
Nieaktualne rekordy i czas wygaśnięcia
Najlepiej, gdy węzeł opuści siatkę, wywoła Unregister
funkcję, co powoduje usunięcie wpisu rejestracji przez usługę rozpoznawania nazw. Czasami węzły są zamykane lub stają się niedostępne przed wywołaniem Unregister
metody , pozostawiając nieaktualny rekord rejestracji.
Nieaktualne rekordy w usłudze rozpoznawania nazw mogą powodować nieudane połączenia. Jeśli węzeł próbujący nawiązać połączenie z siatką odbiera nieaktualne informacje o połączeniu z usługi rozpoznawania nazw, może upłynąć dłużej, aby pomyślnie dołączyć siatkę. Nieaktualne rekordy zajmują również pamięć. Bez wydajnego procesu czyszczenia pamięć podręczna używana do przechowywania rejestracji może ostatecznie przepełnić i spowodować awarię usługi rozpoznawania nazw.
Oznacza CustomPeerResolverService każdy rekord o godzinie wygaśnięcia (DateTime) i przechowuje te informacje jako część rekordu. Usługa używa czasu wygaśnięcia do identyfikowania nieaktualnych rekordów. Implementacje niestandardowe powinny zrobić coś podobnego.
RefreshInterval i CleanupInterval
Właściwość RefreshInterval
określa CustomPeerResolverService , jak długo rekordy rejestracji pozostają prawidłowe w tabeli odnośników rejestracji usługi. Gdy ilość czasu dostarczonego do tej właściwości została przekazana dla danego rekordu, ten rekord staje się nieaktualny i jest oznaczony do usunięcia.
Właściwość CleanupInterval
obiektu CustomPeerResolverService informuje usługę, jak często wyszukiwać i usuwać nieaktualne rekordy rejestracji. Parametr CleanupInterval
powinien być ustawiony na czas większy lub równy ustawieniu RefreshInterval
w usłudze.
Aby zaimplementować własną usługę rozpoznawania nazw, należy napisać funkcję konserwacji, aby usunąć nieaktualne rekordy rejestracji. Istnieje kilka sposobów, aby to zrobić:
Okresowa konserwacja: umożliwia okresowe wyłączanie czasomierza i przechodzenie przez magazyn danych w celu usunięcia starych rekordów. To CustomPeerResolverService podejście jest używane.
Usuwanie pasywne: zamiast aktywnie wyszukiwać nieaktualne rekordy w regularnych odstępach czasu, można identyfikować i usuwać nieaktualne rekordy, gdy usługa już wykonuje inną funkcję. Może to potencjalnie spowolnić czas odpowiedzi na żądania od klientów rozpoznawania nazw, ale eliminuje potrzebę czasomierza i może być bardziej wydajny, jeśli oczekuje się, że kilka węzłów opuści bez wywoływania metody
Unregister
.
RejestracjaLifetime i odświeżanie
Gdy węzeł rejestruje się w usłudze rozpoznawania nazw, otrzymuje RegisterResponseInfo obiekt z usługi. Ten obiekt ma RegistrationLifetime
właściwość, która wskazuje węzeł, ile czasu ma przed wygaśnięciem rejestracji i jest usuwany przez usługę rozpoznawania nazw. Jeśli na przykład wartość wynosi 2 minuty, węzeł musi wywołać w Refresh
ciągu poniżej 2 minut, aby upewnić się, RegistrationLifetime
że rekord pozostaje świeży i nie zostanie usunięty. Gdy usługa rozpoznawania nazw odbiera Refresh
żądanie, wyszukuje rekord i resetuje czas wygaśnięcia. Funkcja Refresh zwraca RefreshResponseInfo obiekt z właściwością RegistrationLifetime
.