IParitionLoadBalancingStrategy Schnittstelle
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Eine Strategie definiert, welche Leases der aktuelle Host in einem bestimmten Moment aufnehmen soll.
public interface IParitionLoadBalancingStrategy
type IParitionLoadBalancingStrategy = interface
Public Interface IParitionLoadBalancingStrategy
Beispiele
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;
}
}
Hinweise
Es kann bei Bedarf neue Properties Für alle zurückgegebenen Leases festlegen, einschließlich der derzeit im Besitz befindlichen Leases.
Methoden
SelectLeasesToTake(IEnumerable<ILease>) |
Wählen Sie Leases aus, die für die Verarbeitung verwendet werden sollen. Diese Methode wird in regelmäßigen Abständen mit aufgerufen. LeaseAcquireInterval |
Gilt für:
Azure SDK for .NET