【发布时间】:2017-04-02 02:11:30
【问题描述】:
我正在做一个小样本来了解 Akka.NET。我正在尝试实现 Child-Per-Entity 模式(如 Akka.NET Design Patterns 所示),其中每个用户(跨集群)有一个演员。
为此,我尝试使用带有 ConsistentHashingPool 的 ClusterRouterPool,它将消息分发给一些父 Actor,这些父 Actor 保留一个 IDictionary(int,IActorRef),子 Actor 由其 id 索引(用作一致哈希的键)。
然而,这种方法似乎并没有像我最初预期的那样奏效,因为:
- 让不同的客户端创建路由器将导致它们创建多个父 Actor,这反过来又会创建重复的子 Actor。
- 即使我有一个路由器,如果一个新节点加入集群会发生什么?路由器不会重新平衡自身,从而导致再次向新的父 Actor 进行路由,从而创建重复的子 Actor?
在 StackOverflow 上有一个有点相似的 question 这里指向使用 Akka.Cluster.Sharding,但在 Akka.NET Design Patterns Aaron 有评论说他使用了一致的哈希路由器方法,这就是我首先开始它的原因.
谢谢
【问题讨论】:
-
作为参考,我将示例添加到GitHub