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

Configuration Microsoft Orleans每个筒仓的最大谷物数,configuration,distributed-computing,orleans,Configuration,Distributed Computing,Orleans,我正在测试作为分布式计算框架的可行性。它似乎可以工作,但我想知道如何设置给定筒仓中的最大活动谷物数 我的颗粒将不会纯粹是CPU限制,并将执行一些IO和其他相关任务。我担心,如果我任其肆意发展,它将导致大量的实例,这将使整个事情陷入困境 这样的思洛存储器配置可能吗?思洛存储器配置xml文件似乎具有这种配置功能 <Scheduler MaxActiveThreads="15"/> 它的XSD是指定的。奥尔良非常适合非CPU限制的工作。Orleans grains的设计目的是使用Ta

我正在测试作为分布式计算框架的可行性。它似乎可以工作,但我想知道如何设置给定筒仓中的最大活动谷物数

我的颗粒将不会纯粹是CPU限制,并将执行一些IO和其他相关任务。我担心,如果我任其肆意发展,它将导致大量的实例,这将使整个事情陷入困境


这样的思洛存储器配置可能吗?

思洛存储器配置xml文件似乎具有这种配置功能

<Scheduler MaxActiveThreads="15"/>


它的XSD是指定的。

奥尔良非常适合非CPU限制的工作。Orleans grains的设计目的是使用
Task
实现异步,而不是线程,因此您应该始终使用C#的[async/await][1]功能执行异步IO

如果您确实需要执行阻塞IO,则可以在粒度上下文之外执行IO,并
等待粒度中的结果,如下所示:

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

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

您可以做到这一点,并且仍然保持单线程执行保证。 请看这里: