有状态参与者的地理映射

Geo mapping with stateful actors

我可以使用 Azure Service Fabric 可靠的有状态参与者来解决地理映射问题吗?假设我有一个演员代表一个事件。该事件由用户创建,用户在地图上设置了此类事件。许多用户可以创建很多事件。代表参与者的每个事件都存储一个地理坐标和一个其他状态。这将导致我可以在地图上分布数百万个事件。

所以现在我想要一个基于地图区域或基于坐标矩形的分组 actor 来表示事件 actor。分组 actor 存储此地图区域中所有事件 actor 的列表。鉴于性能问题,是否可以并建议动态创建这样的分组演员?该区域将由用户输入确定。

这是可能的,但它可能不会执行得很好,因为分组 actor 必须向每个 actor 单独请求其地理坐标,并且这些请求并不便宜,因为它们涉及数据序列化和网络请求。

仅使用 Reliable Dictionary within a Reliable Service 可能会更容易且性能更好。每个坐标和任何关联的数据都可以是字典中的一个条目。您可以像使用普通字典一样枚举、执行 LINQ 查询和一般编程。

有数百万个项目,您可能希望 partition 将服务分布到多个节点。您可以完全控制跨分区的密钥分布,因此您可以通过散列地理坐标或使用四元密钥来执行诸如按区域分区之类的操作。