【发布时间】:2012-07-04 16:33:18
【问题描述】:
我正在设计一个项目,它将同时激活和控制许多异步参与者。
我想问一下,我应该使用哪种方法来获得更高的稳定性和可扩展性?
无状态还是有状态?
就我所看到的差异而言,它看起来像:
一个。有状态的
Actor _act = new Actor (long key);
_act.DoSomething (object _what);
b.无状态
Actor _act = new Actor (long key);
_act = _act.DoSomething(object _what);
据我所知,第二种方法很昂贵 - 内存预留等。但是这种第二种方法可以让您不必担心状态和锁。
dotnet 的首选方式是什么?要达到的参与者目标数量约为 100k,一个节点每秒执行 2.5-3 mils 操作。
PS 每个参与者都有自己的有限状态机来计算。
对于有状态的,它由周期性异步委托调用
对于无状态,它在考虑时间维度的情况下调用每个操作。
【问题讨论】:
-
我投票关闭它,因为它会更好地匹配另一个 stackexchange 网站并引发讨论(可能是个人偏好),尽管我认为这是一个有趣的话题。
-
我同意@Sascha,这是主观的。我个人喜欢第二种方法,但我更喜欢函数式方法并且能够链接语句。
_act.DoX().DoAlsoY(); -
恐怕我错过了社区的目标,我经历了一些缺乏实践,所以我想知道意见。所以如果过于主观,就关闭吧。
-
你为你的演员使用什么框架?还是你自己写的?
标签: c# asynchronous stateless