Udostępnij za pośrednictwem


Szczegóły usługi CustomPeerResolverService: rejestracje klienta

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 Unregistermetody , 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 .

Zobacz też