我看着分片example,发现父母的名字被用作PersistenceId的一部分吗?
PersistenceId = Context.Parent.Path.Name + "-" + Self.Path.Name;
我的问题:
这个例子是特定于Akka.Cluster.Sharding。虽然由群集分片扩展进行管理,分片演员(称为实体)仍放置在标准阿卡演员层次树。它看起来或多或少是这样的:
当你的演员是实体部分在这棵树上,其余由Akka.Cluster.Sharding插件创建。
另一部分是在集群中的定位实体的一种方式。对于此Akka.Cluster.Sharding使用在(shardId,ENTITYID)的形式的复合密钥。总是。
HashCodeMessageExtractor
时一样,你所提到的 - 在shardId是完全基于ENTITYID生成/计算。在你不需要的任何地方包括它的话,ENTITYID就够了。使用HashCodeMessageExtractor
的缺点是,你必须预先提供的碎片数量上限:死脑筋的规则是使用10 *您期望不断在你集群最大用户号码的节点 - 。你可以找到关于建设碎片ID here更详细的信息。