2

我正在设计一个项目,它将同时激活和控制许多异步参与者。

我想问一下,我应该使用哪种方法来获得更高的稳定性和可扩展性?

无状态还是有状态?

据我所知,它看起来像:

一个。有状态的

Actor _act = new Actor (long key);

_act.DoSomething (object _what);

湾。无状态

Actor _act = new Actor (long key);

_act = _act.DoSomething(object _what);

据我所知,第二种方法很昂贵 - 内存保留等。但是这种第二种方法允许不要担心状态和锁。

dotnet 哪种方式更可取?要达到的参与者目标数量约为 100k,一个节点每秒执行 2.5-3 mils 操作。

PS 每个参与者都有其有限状态机来计算。

对于有状态的,它由定期异步委托调用

对于无状态,它要求每个操作都考虑到时间维度。

4

1 回答 1

1

Actor 编程模型基于每个 Actor 应该是具有自包含“状态”的唯一且独立的计算实体的想法。很难根据您提供的代码片段来判断您可能实际获得的好处是通过使用一种技术而不是另一种技术,但在我看来,至少您通过不将它们的状态封装在其中而在某种程度上挫败了 Actors 的想法这样您就可以利用诸如无锁代码之类的东西。

于 2014-04-22T17:05:57.523 回答