IParitionLoadBalancingStrategy Interface
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Une stratégie définit les baux qui doivent être pris par l’hôte actuel dans un certain moment.
public interface IParitionLoadBalancingStrategy
type IParitionLoadBalancingStrategy = interface
Public Interface IParitionLoadBalancingStrategy
Exemples
public class CustomStrategy : IParitionLoadBalancingStrategy
{
private string hostName;
private string hostVersion;
private TimeSpan leaseExpirationInterval;
private const string VersionPropertyKey = "version";
public IEnumerable<ILease> SelectLeasesToTake(IEnumerable<ILease> allLeases)
{
var takenLeases = this.FindLeasesToTake(allLeases);
foreach (var lease in takenLeases)
{
lease.Properties[VersionPropertyKey] = this.hostVersion;
}
return takenLeases;
}
private IEnumerable<ILease> FindLeasesToTake(IEnumerable<ILease> allLeases)
{
List<ILease> takenLeases = new List<ILease>();
foreach (var lease in allLeases)
{
if (string.IsNullOrWhiteSpace(lease.Owner) || this.IsExpired(lease))
{
takenLeases.Add(lease);
}
if (lease.Owner != this.hostName)
{
var ownerVersion = lease.Properties[VersionPropertyKey];
if (ownerVersion < this.hostVersion)
{
takenLeases.Add(lease);
}
// more logic for leases owned by other hosts
}
}
return takenLeases;
}
private bool IsExpired(ILease lease)
{
return lease.Timestamp.ToUniversalTime() + this.leaseExpirationInterval < DateTime.UtcNow;
}
}
Remarques
Il peut définir un nouveau Properties pour tous les baux retournés si nécessaire, y compris les baux actuellement détenus.
Méthodes
SelectLeasesToTake(IEnumerable<ILease>) |
Sélectionnez les baux qui doivent être pris pour traitement. Cette méthode est appelée régulièrement avec LeaseAcquireInterval |
S’applique à
Azure SDK for .NET