具有优先级的分布式任务执行架构

时间:2015-10-09 12:24:35

标签: rabbitmq akka distributed-computing amazon-sqs amazon-swf

我们正在研究创建分布式系统以执行任务,其中任务在.NET(C#)中具有优先级。有很多选择,我想得到你的看法。选项&他们的缺点是:

1)亚马逊的SWF (简单的WorkFlow) - 在.NET中,我们不能使用简化的Java流程等框架。这意味着很多样板代码。此外,亚马逊的这个产品似乎并不受欢迎(所以:没有社区支持,最终可能会消失)

2)在排队系统之上构建我们自己的

2.a) SQS - 并非真正的FIFO,并且使用2个队列(正常和高优先级)不会让我们对优先级进行精细控制(我们可能会生存下去)那个)

2.b) RabbitMQ - 管理开销(设置它,在集群模式下配置可靠性等)

3)我收到了另一个使用"事件驱动的建议"没有队列。我无法看到它是如何可能的,也许有人可以帮我澄清它? (哦,而且,它与一项名为 Akka (基于演员)的技术有关)

谢谢

1 个答案:

答案 0 :(得分:0)

SQS可能是最简单的 - 只需要很少的代码,而且成本极低且设置时间很短。

如果2个队列和高/低优先级不够,那么创建3个队列,或5个队列或10个队列 - 您可以根据需要进行细化。

您可以让多台工作机器按优先顺序扫描所有队列,或者让一些机器专门用于处理高优先级队列,如果您想要更快地处理,这些机器可能更大/更快。

另一种选择是拥有单独的自动扩展策略,这些策略可以根据高优先级队列长度的小幅增加来启动更多/更快的计算机,但只有在低优先级时才能扩展更小/更便宜的计算机队列变得非常长......有很多选项可供选择并对你的解决方案进行微调。

相关问题