C# Azure服务结构-分布式计算代码示例蒙特卡罗模拟-性能问题
在听了最近的azure播客(特别是关于在azure上构建低延迟金融系统的播客)并阅读了所有关于Service Fabric的宣传之后,我决定尝试改变“分布式计算代码示例蒙特卡罗模拟”模式以满足我的需要 我的设想是: 一个具有给定起始状态的请求,使用一个简单的(计算方面的)基于蒙特卡罗的模型运行10公里完整的体育比赛模拟 我的第一次尝试是:C# Azure服务结构-分布式计算代码示例蒙特卡罗模拟-性能问题,c#,azure,actor,azure-service-fabric,C#,Azure,Actor,Azure Service Fabric,在听了最近的azure播客(特别是关于在azure上构建低延迟金融系统的播客)并阅读了所有关于Service Fabric的宣传之后,我决定尝试改变“分布式计算代码示例蒙特卡罗模拟”模式以满足我的需要 我的设想是: 一个具有给定起始状态的请求,使用一个简单的(计算方面的)基于蒙特卡罗的模型运行10公里完整的体育比赛模拟 我的第一次尝试是: 1*有状态的“处理器”参与者,接收匹配的开始状态并将其与相关聚合器ActorId一起转发给10k+任务参与者 10K+*无状态“任务”参与者,运行1次模拟
- 1*有状态的“处理器”参与者,接收匹配的开始状态并将其与相关聚合器ActorId一起转发给10k+任务参与者
- 10K+*无状态“任务”参与者,运行1次模拟并将结果传递给其聚合器参与者。模拟时间很短(~2ms)
- 100*有状态的“聚合器”参与者聚合收到的模拟并传递给最终参与者
- 1*计算最终结果的“最终参与者”
- 使所有参与者无状态,以确保状态管理不会增加开销
- 在处理器中创建所有ActorProxies并存储它们的引用以供将来调用,以确保参与者激活不会导致问题
亚历克斯我本想将此作为评论发布,但我还没有足够的声誉!如果您参考ServiceFabric的文档,请查看本文下面的评论,特别是“tom”在2015年6月左右开始的评论线索。他在有状态的参与者中表现不佳(每秒约20次手术),这似乎被认为是未来改进的一个领域。他们强调在非变异方法上使用只读属性可以显著提高性能。Abhishek Ram还包括一些注释和链接,可能有助于排除故障
您注意到,您尝试使用对性能几乎没有影响的无状态参与者。我将进一步指出注释线索,其中另一个用户报告使用只读方法在单个参与者上每秒实现2k+操作,我希望执行类似于无状态参与者方法的操作。也许可以将来自性能计数器的信息与此进行比较,以查看您的性能与评论中一些微不足道的示例的匹配程度。Great-这是非常有用的信息,即使是“Ben Adams”报告的每秒2252次方法调用的性能也不会让我感到激动。啊,好吧,没有人声称SF是一切的金子弹:)。谢谢你的回复,耶茨先生