我有一个用例,其中将在集群中创建一百万个单独的参与者。任务将从外部集群接收,我必须确定任务并将其发送给为该任务分配的单个参与者。如果使用群集分片,如何从群集外部创建执行元,以及如何从群集节点外部向该特定执行元发送消息如果我使用集群分片,我必须为一个演员创建单独的分片。这意味着必须为百万个演员创建百万个碎片。如何识别集群中的分片和参与者?
46qrfjad1#
如果我使用集群分片,我必须为一个演员创建单独的分片。碎片只是一组本地参与者,它们都托管在同一个进程中--这是Akka .NET中将实体参与者分组在一起的一种任意方式。(HashCodeMessageExtractor)基于实体参与者的唯一id将实体参与者分配给碎片,您可以从通过ShardRegion和IMessageExtractor(最常见的是HashCodeMessageExtractor)发送给它的消息内容中提取这些消息。这是一个很好的工具,能够在大型集群中水平分布数百万参与者--前几天我刚刚发布了一个示例,其中我运行了200个Akka.NET节点,总共有2000个碎片(每个节点10个),能够承载数千万参与者:https://github.com/petabridge/AkkaDotNet.LargeNetworkTests-您可能会发现这很有帮助!
HashCodeMessageExtractor
ShardRegion
IMessageExtractor
1条答案
按热度按时间46qrfjad1#
如果我使用集群分片,我必须为一个演员创建单独的分片。
碎片只是一组本地参与者,它们都托管在同一个进程中--这是Akka .NET中将实体参与者分组在一起的一种任意方式。(
HashCodeMessageExtractor
)基于实体参与者的唯一id将实体参与者分配给碎片,您可以从通过ShardRegion
和IMessageExtractor
(最常见的是HashCodeMessageExtractor
)发送给它的消息内容中提取这些消息。这是一个很好的工具,能够在大型集群中水平分布数百万参与者--前几天我刚刚发布了一个示例,其中我运行了200个Akka.NET节点,总共有2000个碎片(每个节点10个),能够承载数千万参与者:https://github.com/petabridge/AkkaDotNet.LargeNetworkTests-您可能会发现这很有帮助!