Orleans 2.0 官方文档 —— 8.7 实现细节 -> 负载均衡

负载均衡

从广义上讲,负载均衡是Orleans运行时的支柱之一。Orleans运行时尝试使一切均衡,因为均衡允许最大限度地利用资源,并避免热点,从而提高性能,并有助于弹性。Orleans的负载均衡适用于多个地方。下面是运行时执行均衡的地方(非详尽列表):

  1. 默认的actor放置策略是随机的 —— 新的激活体被随机放置在silo中。这样可以实现平衡的放置,并防止大多数情况下出现热点。

  2. 一个更高级的ActivationCountPlacement 试图均衡所有silo上的激活体,从而在silo之间实现更均匀的激活分配。这对于弹性尤为重要。

  3. Grain Directory服务构建在分布式哈希表之上,该表本身就是平衡的。目录服务将grain映射到激活体,每个silo拥有全局映射表的一部分,并且该表以平衡的方式,在所有silo中进行全局分区。为此,我们使用与虚拟存储桶一致的哈希。

  4. 客户端以平衡的方式连接到所有网关,并在它们之间传播请求。

  5. 提醒服务是分布式的、分区的运行时服务。分配哪个silo负责为哪个提醒服务,通过一致的哈希,在所有silo中实现均衡,就像在grain目录中一样。

  6. silo中的性能关键组件是分区的,跨越它们的工作是本地平衡的。这样,silo运行时可以充分利用所有可用的CPU内核,而不会创建silo内部的瓶颈。这适用于所有本地资源:负载分配到线程、套接字、调度职责、队列等。

  7. StreamQueueBalance平衡了当集群中的跨silo时,从持久性队列中拉取事件的责任。

同样要注意的是,从广义上讲,均衡并不一定意味着局部性的丧失。既可以均衡,又可以仍然保持良好的局部性。例如,当均衡意味着分片/分区时,您可以对某个逻辑任务的责任,进行分区,同时仍然保持每个分区内的局部性。这适用于本地和分布式平衡。

有关更多详细信息,请参阅[Orleans平衡技术](http://dotnet.github.io/orleans/Presentations/BalancingTechniques in Orleans.pptx)中的演示文稿。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值