CustomPeerResolverService: registrazioni clientInside the CustomPeerResolverService: Client Registrations

Ogni nodo della rete pubblica le informazioni sull'endpoint relative nel servizio resolver tramite la funzione Register.Each node in the mesh publishes its endpoint information to the resolver service through the Register function. Il servizio resolver archivia queste informazioni come record di registrazione.The resolver service stores this information as a registration record. Questo record contiene un identificatore univoco (RegistrationID) e informazioni sull'endpoint (PeerNodeAddress) per il nodo.This record contains a unique identifier (RegistrationID) and endpoint information (PeerNodeAddress) for the node.

Record non aggiornati e data di scadenzaStale Records and Expiration Time

Idealmente, quando un nodo abbandona la rete, chiama la funzione Unregister affinché il servizio resolver rimuova la voce di registrazione.Ideally, when a node leaves the mesh, it will call the Unregister function, which causes the resolver service to remove the registration entry. Talvolta, i nodi vengono arrestati o diventano inaccessibili prima della chiamata alla funzione Unregister, lasciando un record di registrazione non aggiornato.Sometimes, nodes shut down or become inaccessible before calling Unregister, leaving behind a stale registration record.

I record non aggiornati nel servizio resolver possono causare problemi di connessione.Stale records in your resolver service can cause failed connections. Se un nodo che tenta di connettersi a una rete riceve informazioni di connessione non aggiornate dal servizio resolver, potrebbe richiedere più tempo per connettersi alla rete in modo corretto.If a node trying to connect to a mesh receives stale connection information from the resolver service, it can take longer to successfully join the mesh. I record non aggiornati occupano memoria.Stale records also take up memory. Senza un processo di pulizia efficiente, la cache utilizzata per archiviare le registrazioni potrebbe alla fine causare un overflow o un arresto anomalo del servizio resolver.Without an efficient clean up process, the cache used to store registrations could eventually overflow and crash the resolver service.

CustomPeerResolverService contrassegna ogni record con una data di scadenza (Datetime) e archivia tali informazioni come parte del record.The CustomPeerResolverService marks each record with an expiration time (DateTime), and stores that information as part of the record. Il servizio utilizza la data di scadenza per identificare i record non aggiornati.The service uses the expiration time to identify stale records. Le implementazioni personalizzate dovrebbero offrire un comportamento simile.Custom implementations should do something similar.

RefreshInterval e CleanupIntervalRefreshInterval and CleanupInterval

La proprietà RefreshInterval di CustomPeerResolverService definisce il periodo di validità dei record di registrazione nella tabella di ricerca della registrazione del servizio.The RefreshInterval property of the CustomPeerResolverService defines how long registration records remain valid in the service's registration lookup table. Superata la quantità di tempo fornita a questa proprietà per un determinato record, tale record non risulta più aggiornato e viene contrassegnato per l'eliminazione.When the amount of time supplied to this property has passed for a given record, that record becomes stale and is marked for deletion.

La proprietà CleanupInterval di CustomPeerResolverService specifica al servizio la frequenza con la quale cercare ed eliminare i record di registrazione non aggiornati.The CleanupInterval property of the CustomPeerResolverService tells the service how often to search for and delete stale registration records. È necessario impostare la proprietà CleanupInterval su un valore superiore o uguale al valore RefreshInterval impostato nel servizio.The CleanupInterval should be set to a time greater than or equal to the RefreshInterval set on the service.

Per implementare il proprio servizio resolver, è necessario scrivere una funzione di manutenzione per rimuovere i record di registrazione non aggiornati.To implement your own resolver service, you need to write a maintenance function to remove stale registration records. Sono disponibili diversi modi per eseguire questa operazione:There are several ways to do this:

  • Manutenzione periodica: impostare un timer in modo disattivi periodicamente ed esaminare l'archivio dati per eliminare i record obsoleti.Periodic maintenance: Set a timer to go off periodically, and go through your data store to delete old records. Questo approccio è utilizzato da CustomPeerResolverService.The CustomPeerResolverService uses this approach.

  • Eliminazione passiva: anziché cercare attivamente i record non aggiornati a intervalli regolari, è possibile identificare ed eliminare i record non aggiornati quando il servizio è già in esecuzione un'altra funzione.Passive deletion: Instead of actively searching for stale records at regular intervals, you can identify and delete stale records when your service is already performing another function. Questo approccio potrebbe potenzialmente rallentare i tempi di risposta alle richieste dei client resolver, ma elimina la necessità di un timer e potrebbe rivelarsi più efficiente qualora si preveda che un numero ridotto di nodi abbandoni la rete senza chiamare Unregister.This may potentially slow down response time to requests from the resolver clients, but it eliminates the need for a timer, and may be more efficient if few nodes are expected to leave without calling Unregister.

RegistrationLifetime e RefreshRegistrationLifetime and Refresh

Quando un nodo effettua la registrazione con un servizio resolver, riceve un oggetto RegisterResponseInfo dal servizio.When a node registers with a resolver service, it receives a RegisterResponseInfo object from the service. La proprietà RegistrationLifetime di questo oggetto indica al nodo il tempo a sua disposizione prima che scada la registrazione e venga rimosso dal servizio resolver.This object has a RegistrationLifetime property which indicates to the node how much time it has before the registration expires and is removed by the resolver service. Se, ad esempio, RegistrationLifetime è pari a 2 minuti, il nodo deve chiamare Refresh in meno di 2 minuti per assicurarsi che il record rimanga aggiornato e non venga eliminato.If, for example, the RegistrationLifetime is 2 minutes, the node needs to call Refresh in under 2 minutes to ensure the record stays fresh and is not deleted. Quando il servizio resolver riceve una richiesta Refresh, cerca il record e reimposta la data di scadenza.When the resolver service receives a Refresh request, it looks up the record and resets the expiration time. Refresh restituisce un oggetto RefreshResponseInfo con una proprietà RegistrationLifetime.Refresh returns a RefreshResponseInfo object with a RegistrationLifetime property.

Vedere ancheSee Also

Resolver del peerPeer Resolvers