我们目前正在构建一个应该能够处理大量传感器事件的系统。
由于需要处理数百万个不同的传感器实例,我认为 Service Fabric Actor 模型将是一个完美的选择。所以想法是让一个 Actor 负责处理一个传感器的事件 (SensorId=ActorId)。
映射很简单,因为我们只需要通过特定的 SensorId 来查询数据,所以我们将所有这些都放在了一个地方,这样可以实现非常快速的查找。
现在的问题是(一些)传感器正在以单个参与者无法处理的速率发送数据。
这就是我们现在被卡住的情况,我们无法提示系统并告诉它为特定传感器(如 Sensor123 和 Sensor567)分配负载到更多 Actor。
是否有可能使用 Service Fabric 提供的虚拟 Actor System 来解决这个问题?
更新 1:
我认为我们对单个演员进行缩放没有问题。我们为一位独特的演员获得大约 5k 条消息/秒。但有些传感器需要 50-100k/s 的目标吞吐量。因此,按照设计(单线程执行),单个参与者将无法完成此操作。
因此,为了澄清最初的问题:我们或多或少地在寻找一种自动划分“某些”参与者的方法。
(当然,我们可以为每个传感器创建 10 个参与者来划分负载。但这会使查找效率低下,另外我们需要 10 倍以上的 RAM。这似乎不合理,因为 0.5-1% 的传感器需要更多吞吐量)