听过最近的azure播客(特别是关于在azure上构建低延迟金融系统的播客)并阅读所有关于服务结构的宣传,我决定尝试修改“分布式计算代码示例蒙特卡洛模拟”模式适合我的需求。Azure服务结构 - 分布式计算代码示例Monte Carlo仿真 - 性能问题
我的场景是: 使用一个简单的(计算明智的)基于monte-carlo的模型,用一个给定的起始状态运行10k个全运动比赛模拟的一个请求。
我第一次尝试是:
1 *接收匹配的启动状态,并将其转发到10k +任务演员,相关聚合的actorId
-
沿着有状态的“处理器”演员
10K + * StateLess'Task'Actor运行1次模拟并将结果传递给其聚合器Actor。仿真时间小(〜2毫秒)
100 *有状态“聚合器”行动者聚集接收到的模拟和传递到finaliser演员所计算的最终结果
1 *“Finaliser”演员
运行在仅使用任务我开发框上面的花费< 100毫秒,但上面的设置(在开发计算机上运行的本地集群)把50secs和更多!
调试通过一个潜在的原因,我发现是处理器角色发送初始任务所需的时间量,所以我想知道什么样的开销在调用服务结构(我想各种命名当我打电话给演员的方法时,服务电话正在发生)以及这种缓慢是否可能是由于这一点以及我的任务数量?
要消除其他可能我做了以下,发现只有在总时间非常小的差异:
- 的所有演员无国籍,保证国家管理不增加开销。
- 在处理器中创建所有ActorProxy,并存储它们的引用以备将来调用,以确保Actor Activations不会引起问题。
有没有人有什么建议可以从这里走,还是有人试图实施类似的东西?
谢谢, 亚历克斯
伟大的 - 这是非常有用的信息,即使是本亚当斯报道的2252方法调用的表现也不令我兴奋。啊,没有人声称SF是所有东西的金色子弹:)。谢谢Yates先生的回应 –