Partilhar via


Dentro do CustomPeerResolverService: Registros de cliente

Cada nó na malha publica suas informações de ponto de extremidade para o serviço de resolução através da Register função. O serviço de resolução armazena essas informações como um registro de registro. Esse registro contém um identificador exclusivo (RegistrationID) e informações de ponto de extremidade (PeerNodeAddress) para o nó.

Registros obsoletos e tempo de expiração

Idealmente, quando um nó sai da malha, ele chamará a função, o Unregister que faz com que o serviço de resolução remova a entrada de registro. Às vezes, os nós se desligam ou ficam inacessíveis antes de chamar Unregister, deixando para trás um registro de registro obsoleto.

Registros obsoletos no serviço de resolução podem causar falhas nas conexões. Se um nó que tenta se conectar a uma malha receber informações de conexão obsoletas do serviço de resolução, pode levar mais tempo para ingressar com êxito na malha. Registros obsoletos também ocupam memória. Sem um processo de limpeza eficiente, o cache usado para armazenar registros pode eventualmente estourar e travar o serviço de resolução.

O CustomPeerResolverService marca cada registro com uma hora de expiração (DateTime) e armazena essas informações como parte do registro. O serviço usa o tempo de expiração para identificar registros obsoletos. As implementações personalizadas devem fazer algo semelhante.

RefreshInterval e CleanupInterval

A RefreshInterval propriedade do define por quanto tempo os CustomPeerResolverService registros de registro permanecem válidos na tabela de pesquisa de registro do serviço. Quando a quantidade de tempo fornecida a essa propriedade tiver passado para um determinado registro, esse registro se tornará obsoleto e será marcado para exclusão.

A CleanupInterval propriedade do informa ao CustomPeerResolverService serviço com que frequência procurar e excluir registros de registro obsoletos. O CleanupInterval deve ser definido para um tempo maior ou igual ao RefreshInterval definido no serviço.

Para implementar seu próprio serviço de resolução, você precisa escrever uma função de manutenção para remover registros de registro obsoletos. Há várias maneiras de fazer isso:

  • Manutenção periódica: defina um temporizador para apagar periodicamente e passe pelo seu armazenamento de dados para excluir registros antigos. O CustomPeerResolverService usa esta abordagem.

  • Exclusão passiva: em vez de procurar ativamente registros obsoletos em intervalos regulares, você pode identificar e excluir registros obsoletos quando o serviço já estiver executando outra função. Isso pode potencialmente diminuir o tempo de resposta às solicitações dos clientes do resolvedor, mas elimina a necessidade de um temporizador e pode ser mais eficiente se poucos nós forem esperados para sair sem chamar Unregister.

RegistrationLifetime e Refresh

Quando um nó se registra em um serviço de resolvedor, ele recebe um RegisterResponseInfo objeto do serviço. Este objeto tem uma RegistrationLifetime propriedade que indica ao nó quanto tempo ele tem antes do registro expirar e é removido pelo serviço de resolução. Se, por exemplo, o RegistrationLifetime é de 2 minutos, o nó precisa chamar Refresh menos de 2 minutos para garantir que o registro permaneça atualizado e não seja excluído. Quando o serviço de resolução recebe uma Refresh solicitação, ele procura o registro e redefine o tempo de expiração. Refresh retorna um RefreshResponseInfo objeto com uma RegistrationLifetime propriedade.

Consulte também