Microsoft Orleans每个筒仓的最大谷物数量

问题描述 投票:2回答:3

我正在测试Microsoft Orleans作为分布式计算框架的可行性。似乎可行,但是我想知道如何在给定的筒仓中设置最大活动颗粒数?

我的谷物将不完全受CPU约束,将执行一些IO和其他相关任务。我担心,如果我放任不管,它会旋转大量实例,使整个过程陷入瘫痪。

像这样的筒仓配置可以吗?

configuration distributed-computing orleans
3个回答
5
投票

奥尔良非常适合非CPU限制的工作。奥尔良谷物被设计为使用Task<T>进行异步,而不是使用线程,因此您应始终使用C#的[async / await] [1]功能执行异步IO。

如果绝对需要执行阻塞IO,则可以在grain上下文之外执行IO,并在grain中执行await结果,如下所示:

var result = await Task.Run(() => {
  // Perform blocking work.
  return 43;
});

3
投票

最好将所有阻塞操作卸载到线程池,并将MaxActiveThreads保留为默认值(#cores)。基本上,您永远不想阻塞Orleans线程(那些MaxActiveThreads)。那些奥尔良线程应该进行轻量级计算,并发出外部异步调用(对其他谷物或外部服务)。所有繁重的计算都不应在Orlean的线程上进行。

您可以执行此操作,并且仍然保持单线程执行保证。看到这里:http://dotnet.github.io/orleans/Advanced-Concepts/External-Tasks-and-Grains


0
投票

看来,筒仓配置xml文件具有该配置能力。

<Scheduler MaxActiveThreads="15"/>

为其指定的XSD online

© www.soinside.com 2019 - 2024. All rights reserved.