Binnen de CustomPeerResolverService: Clientregistraties
Elk knooppunt in de mesh publiceert de eindpuntinformatie naar de resolver-service via de Register
functie. De resolver-service slaat deze informatie op als registratierecord. Deze record bevat een unieke id (RegistrationID) en eindpuntgegevens (PeerNodeAddress) voor het knooppunt.
Verlopen records en verlooptijd
In het ideale geval wordt de functie aangeroepen Unregister
wanneer een knooppunt de mesh verlaat, waardoor de resolver-service de registratievermelding verwijdert. Soms worden knooppunten afgesloten of ontoegankelijk voordat ze worden aangeroepen Unregister
, waardoor een verlopen registratierecord achterblijft.
Verouderde records in uw resolver-service kunnen mislukte verbindingen veroorzaken. Als een knooppunt dat verbinding probeert te maken met een mesh verouderde verbindingsgegevens van de resolver-service ontvangt, kan het langer duren om verbinding te maken met de mesh. Verouderde records nemen ook geheugen in beslag. Zonder een efficiƫnt opschoningsproces kan de cache die wordt gebruikt om registraties op te slaan uiteindelijk overlopen en de resolver-service vastlopen.
De CustomPeerResolverService records worden gemarkeerd met een verlooptijd (Datum/tijd) en slaan die gegevens op als onderdeel van de record. De service gebruikt de verlooptijd om verouderde records te identificeren. Aangepaste implementaties moeten iets soortgelijks doen.
RefreshInterval en CleanupInterval
De RefreshInterval
eigenschap van de CustomPeerResolverService eigenschap definieert hoe lang registratierecords geldig blijven in de opzoektabel voor registratie van de service. Wanneer de hoeveelheid tijd die aan deze eigenschap is opgegeven voor een bepaalde record is verstreken, wordt die record verouderd en gemarkeerd voor verwijdering.
De CleanupInterval
eigenschap van de CustomPeerResolverService service vertelt hoe vaak verouderde registratierecords moeten worden gezocht en verwijderd. De CleanupInterval
waarde moet worden ingesteld op een tijd die groter is dan of gelijk is aan de RefreshInterval
set in de service.
Als u uw eigen resolverservice wilt implementeren, moet u een onderhoudsfunctie schrijven om verlopen registratierecords te verwijderen. U kunt dit op verschillende manieren doen:
Periodiek onderhoud: stel een timer in om periodiek af te gaan en door uw gegevensarchief te gaan om oude records te verwijderen. De CustomPeerResolverService methode maakt gebruik van deze benadering.
Passieve verwijdering: In plaats van regelmatig verouderde records te zoeken, kunt u verouderde records identificeren en verwijderen wanneer uw service al een andere functie uitvoert. Dit kan de reactietijd voor aanvragen van de resolver-clients vertragen, maar het elimineert de noodzaak van een timer en kan efficiƫnter zijn als er naar verwachting weinig knooppunten weggaan zonder aan te roepen
Unregister
.
RegistrationLifetime en Refresh
Wanneer een knooppunt zich registreert bij een resolver-service, ontvangt het een RegisterResponseInfo object van de service. Dit object heeft een RegistrationLifetime
eigenschap die aangeeft hoeveel tijd het knooppunt heeft voordat de registratie verloopt en wordt verwijderd door de resolver-service. Als het RegistrationLifetime
bijvoorbeeld 2 minuten is, moet het knooppunt minder dan 2 minuten inbellen Refresh
om ervoor te zorgen dat de record actueel blijft en niet wordt verwijderd. Wanneer de resolver-service een Refresh
aanvraag ontvangt, wordt de record opgezoekt en wordt de verlooptijd opnieuw ingesteld. Vernieuwen retourneert een RefreshResponseInfo object met een RegistrationLifetime
eigenschap.