我是 akka 和演员模式的新手,因此我不确定它是否符合我的需求。
我想用 akka 和数百万个可以相互影响的实体(认为是域对象 - 后来的参与者)创建一个模拟。因此,将模拟视为具有或多或少“模糊”结果的模拟,我们有一个包含实体的数组,其中每个实体都有速度,但会被实际实体前面的实体阻碍。当模拟开始时,每个实体应该移动 n 个域,或者,如果被其他实体阻止,则移动更少的域。我们有多次迭代,最后我们有一个新的顺序。这会重复几轮,直到我们想要看到领先实体的“快照”(然后可能在下一轮开始之前将其删除)。
所以我不明白我是否可以用akka创建它,因为:
是否有可能有每个演员的位置的全局列表,所以他们知道他们在哪个位置,哪些在他们面前?据我了解,这违反了演员的封装。我可以将演员的位置放在演员本身,但是我怎样才能看到/通知这个演员周围的演员呢?除此之外,全局列表会产生同步问题并影响性能,这与期望的行为完全相反(并且是 akka/actor-pattern 的补充)
我错过了什么?我必须寻找另一种设计方法吗?感谢您的建议。
更新:使用事件总线和分类器似乎也不是一种选择。参考文档:
“因此它不适合订阅频率非常高的用例”