Dela via


Inuti CustomPeerResolverService: Användarregistreringar

Varje nod i nätet publicerar sin slutpunktsinformation till matchningstjänsten via Register funktionen. Lösartjänsten lagrar den här informationen som en registreringsuppgift. Den här posten innehåller en unik identifierare (RegistrationID) och slutpunktsinformation (PeerNodeAddress) för noden.

Inaktuella poster och utgångstid

Helst när en nod lämnar nätet anropas Unregister funktionen, vilket gör att matchningstjänsten tar bort registreringsposten. Ibland stängs noder av eller blir otillgängliga innan de anropar Unregister och lämnar efter sig en inaktuell registerpost.

Föråldrade poster i din resolver-tjänst kan orsaka misslyckade anslutningar. Om en nod som försöker ansluta till ett nätverk tar emot inaktuell anslutningsinformation från resolver-tjänsten, kan det ta längre tid att gå med i nätverket. Inaktuella poster tar också upp minne. Utan en effektiv rensningsprocess kan cachen som används för att lagra registreringar så småningom flöda över och krascha lösningstjänsten.

Markerar CustomPeerResolverService varje post med en förfallotid (DateTime) och lagrar den informationen som en del av posten. Tjänsten använder förfallotiden för att identifiera inaktuella poster. Anpassade implementeringar bör göra något liknande.

Uppdateringsintervall och Rensningsintervall

Egenskapen RefreshInterval för CustomPeerResolverService definierar hur länge registreringsposter förblir giltiga i tjänstens registreringsuppslagstabell. När den tid som har angetts för den här egenskapen har passerat för en viss post blir posten inaktuell och markerad för borttagning.

Egenskapen CleanupInterval av CustomPeerResolverService anger hur ofta tjänsten ska söka efter och ta bort föråldrade registreringsposter. CleanupInterval Ska ställas in till en tid som är större än eller lika med tiden RefreshInterval på tjänsten.

För att implementera din egen lösningstjänst måste du skriva en underhållsfunktion för att ta bort inaktuella registreringsposter. Det finns flera sätt att göra detta:

  • Periodiskt underhåll: Ställ in en timer för att gå av med jämna mellanrum och gå igenom datalagret för att ta bort gamla poster. Använder CustomPeerResolverService den här metoden.

  • Passiv borttagning: I stället för att aktivt söka efter inaktuella poster med jämna mellanrum kan du identifiera och ta bort inaktuella poster när tjänsten redan utför en annan funktion. Detta kan eventuellt göra svarstiden långsammare för begäranden från matchningsklienterna, men det eliminerar behovet av en timer och kan vara effektivare om få noder förväntas lämna utan att anropa Unregister.

Registreringstid och Uppdateringstid

När en nod registreras med en matchningstjänst tar den emot ett RegisterResponseInfo objekt från tjänsten. Det här objektet har en RegistrationLifetime egenskap som anger för noden hur lång tid det har innan registreringen upphör att gälla och tas bort av matchningstjänsten. Om till exempel RegistrationLifetime är 2 minuter måste noden anropa Refresh inom 2 minuter för att säkerställa att registreringen behålls aktuell och inte tas bort. När resolver-tjänsten tar emot en Refresh begäran, letar den upp posten och återställer förfallotiden. Uppdatering returnerar ett RefreshResponseInfo objekt med en RegistrationLifetime egenskap.

Se även