Azure Durable Functions - 扇出-扇入可伸缩性
Azure Durable Functions - fanout-fanin scalability
我们是一家以技能为基础的开发公司,创建竞赛。本次比赛的选手可以通过上传照片,互相排名来获得积分。这样做的关键要求之一是定期更新比赛排行榜,以保持玩家的兴趣。我们正在寻找一个扇出和扇入架构来实现排行榜。附典型工作流程
根据我们的分析,持久函数似乎是最佳选择。
但是我们有以下限制
- 每场比赛约有500名选手
- 一位玩家最多可对 500 张照片进行排名
我一直在努力通读文档。但是找不到有关使用持久函数的这种方法的可扩展性的文档。非常感谢任何意见或见解
您可以在此处找到 Durable Functions 的性能目标:https://docs.microsoft.com/en-us/azure/azure-functions/durable/durable-functions-perf-and-scale#performance-targets
Parallel activity execution (fan-out) 100 activities per second, per instance
Parallel response processing (fan-in) 150 responses per second, per instance
如果您 运行 使用 Azure Functions Consumption 计划,随着更多消息出现在工作项队列中,那里的扩展控制器将扩展到更多实例。
这是用于开始活动的队列(您将使用它来计算单个玩家的分数。
您还可以按照文档中的说明提高扇入性能:
Unlike fan-out, fan-in operations are limited to a single VM. If your application uses the fan-out, fan-in pattern and you are concerned about fan-in performance, consider sub-dividing the activity function fan-out across multiple sub-orchestrations.
所以你会:
- 主要协调器
- 第 0 批子协调器
- Activity 批次 0 中的用户 0
- Activity 用户 1 在批次 0
- ...
- 第 1 批子协调器
- Activity 批次 1 中的用户 0
- Activity 批次 1 中的用户 1
- ...
- ...
这种子协调器批处理使其速度更快的原因是,随着活动的完成,您的协调器历史记录 table 会获得越来越多的行。
每次有结果时它都必须加载这些。
因此,通过限制这些行的上限,您可以获得最大的性能。
TL;DR:我认为扇出会很好地扩展,但您可能想要进行子协调器批处理以提高扇入性能。
我们是一家以技能为基础的开发公司,创建竞赛。本次比赛的选手可以通过上传照片,互相排名来获得积分。这样做的关键要求之一是定期更新比赛排行榜,以保持玩家的兴趣。我们正在寻找一个扇出和扇入架构来实现排行榜。附典型工作流程
根据我们的分析,持久函数似乎是最佳选择。
但是我们有以下限制
- 每场比赛约有500名选手
- 一位玩家最多可对 500 张照片进行排名
我一直在努力通读文档。但是找不到有关使用持久函数的这种方法的可扩展性的文档。非常感谢任何意见或见解
您可以在此处找到 Durable Functions 的性能目标:https://docs.microsoft.com/en-us/azure/azure-functions/durable/durable-functions-perf-and-scale#performance-targets
Parallel activity execution (fan-out) 100 activities per second, per instance
Parallel response processing (fan-in) 150 responses per second, per instance
如果您 运行 使用 Azure Functions Consumption 计划,随着更多消息出现在工作项队列中,那里的扩展控制器将扩展到更多实例。 这是用于开始活动的队列(您将使用它来计算单个玩家的分数。
您还可以按照文档中的说明提高扇入性能:
Unlike fan-out, fan-in operations are limited to a single VM. If your application uses the fan-out, fan-in pattern and you are concerned about fan-in performance, consider sub-dividing the activity function fan-out across multiple sub-orchestrations.
所以你会:
- 主要协调器
- 第 0 批子协调器
- Activity 批次 0 中的用户 0
- Activity 用户 1 在批次 0
- ...
- 第 1 批子协调器
- Activity 批次 1 中的用户 0
- Activity 批次 1 中的用户 1
- ...
- ...
- 第 0 批子协调器
这种子协调器批处理使其速度更快的原因是,随着活动的完成,您的协调器历史记录 table 会获得越来越多的行。 每次有结果时它都必须加载这些。 因此,通过限制这些行的上限,您可以获得最大的性能。
TL;DR:我认为扇出会很好地扩展,但您可能想要进行子协调器批处理以提高扇入性能。