ActivationCountBasedPlacement 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
一种放置策略,该策略尝试根据每个服务器上最近处于活动状态的粒度数实现大致均匀的负载。
[System.Serializable]
public class ActivationCountBasedPlacement : Orleans.Runtime.PlacementStrategy
[System.Serializable]
[Orleans.GenerateSerializer]
[Orleans.Immutable]
[Orleans.SuppressReferenceTracking]
public sealed class ActivationCountBasedPlacement : Orleans.Runtime.PlacementStrategy
[<System.Serializable>]
type ActivationCountBasedPlacement = class
inherit PlacementStrategy
[<System.Serializable>]
[<Orleans.GenerateSerializer>]
[<Orleans.Immutable>]
[<Orleans.SuppressReferenceTracking>]
type ActivationCountBasedPlacement = class
inherit PlacementStrategy
Public Class ActivationCountBasedPlacement
Inherits PlacementStrategy
Public NotInheritable Class ActivationCountBasedPlacement
Inherits PlacementStrategy
- 继承
- 属性
注解
此放置策略的目的是根据最近繁忙粒度的数量,将新的粒度激活放置在负载最少的服务器上。 它包含一种机制,其中所有服务器定期将其总激活计数发布到所有其他服务器。 然后,放置控制器通过检查最近报告的激活计数和根据放置控制器在当前服务器上最近进行的激活计数对当前激活计数进行预测来选择预计激活次数最少的服务器。 控制器在进行此预测时随机选择多个服务器,以尝试避免多个单独的服务器重载同一服务器。 默认情况下,会随机选择两个服务器,但此值可通过 Orleans.Runtime.ActivationCountBasedPlacementOptions
进行配置。
此算法基于 Michael David Mitzenmacher https://www.eecs.harvard.edu/~michaelm/postscripts/mythesis.pdf的论文《随机负载均衡中两个选项的力量》,并在 NGINX 中也用于分布式负载均衡,如 NGINX 一文和“两个选项的力量”Load-Balancing算法 https://www.nginx.com/blog/nginx-power-of-two-choices-load-balancing-algorithm/中所述。
此放置策略是通过将 属性添加到 ActivationCountBasedPlacementAttribute grain 来配置的。
构造函数
ActivationCountBasedPlacement() |
一种放置策略,该策略尝试根据每个服务器上最近处于活动状态的粒度数实现大致均匀的负载。 |
属性
IsUsingGrainDirectory |
获取一个值,该值指示此放置策略是否需要在 grain 目录中注册激活。 (继承自 PlacementStrategy) |
方法
Initialize(GrainProperties) |
使用提供的 grain 属性初始化此类型的实例。 (继承自 PlacementStrategy) |
PopulateGrainProperties(IServiceProvider, Type, GrainType, Dictionary<String,String>) |
填充 grain 属性以指定首选放置策略。 (继承自 PlacementStrategy) |