当前位置: 首页 > 知识库问答 >
问题:

Azure:运行大量任务的最佳体系结构,每个任务需要 5 到 10 秒(从 Web api 触发)?

赵健柏
2023-03-14

我们正在使用Azure服务来实现这一点,我们有一个运行在Azue web Service App上的web api(Flask),连接到另一个服务中的PostgreSQL(到目前为止,虽然连接速度有点慢)。无论如何,用户执行的操作会触发流程。基本上,我们需要预处理数千条记录(1000到5000条),每个记录的处理时间在5到10秒之间。

我们考虑使用Azure Functions来实现这一点,并触发数千个超文本传输协议请求。但是这些请求没有并行化,即使我们添加了更多实例。它们似乎是排队的。我与Azure支持人员交谈过,他们告诉我这可能不是最好的解决方案,因为Azure函数预计会快速运行,而不需要几秒钟即可执行。

所以我的问题是:在Azure上做这样的事情最好的架构是什么?我读过一些叫做事件网格的东西,但是我没有头绪(第一次使用Azure)。基本的解决方案是拥有一个VM,它可以接收参数并启动进程,但这太复杂了(我们的团队中没有devops可以处理这一点)。

提前致谢。

共有3个答案

丁善
2023-03-14

Matt的答案是可行的,但我特别指出,您更喜欢将请求并行化(即执行时间优先)。你看过Azure Batch吗?它是专门为大规模并行工作负载而设计的。

越望
2023-03-14

你可以尝试Azure队列存储触发器,当你在Azure队列中添加消息时,它会触发Azure函数,是的,它会并行运行。但是它有一个限制,但是你可以扩展它,因为它在留档中提到。

Azure函数的Azure队列存储触发器

韩彦君
2023-03-14

我强烈建议为此评估Azure耐用函数,运行时支持自动扇出,这意味着您可以非常轻松地获得大规模。确保这些函数与之通信的系统也可以处理负载!

基本结构是启动一个编排器功能,然后可以启动多个活动功能,如果需要,这些功能本身可以链接在一起,甚至可以再次扇出。您所引用的时间不会成为问题,请参阅此处。你可以在消费计划中愉快地运行所有这些。

当然,您需要在这里查看成本,如果您确实使用了消费计划,您将按Mb秒支付,即成本与使用的内存和花费的时间成正比。

 类似资料:
  • 问题内容: 如何控制/限制提交给的任务?我已经发送了SMS消息,并且我需要控制执行程序,以便它最多只能以每秒N条消息的速度发送。 问题答案: 假设您为每个任务创建一条SMS消息,则可以使用ScheduleExecutorService。 将任务添加到队列中,它们将以每秒10个的速度处理。

  • 我正在PyCharm中开发Django项目,一切正常。我已经在虚拟环境中安装了fabric,并添加了fabfile。加入我的项目。在这个文件中,我放置了一个测试任务定义: 之后,我试图直接从我的PyCharm上执行这个任务。你有什么建议我该怎么做?

  • 问题内容: 如何每天在指定时间(例如上午11:00)使用运行任务?我正在使用JDK 1.4.2,我知道它很旧,但这是项目所需要的。 问题答案: Quartz是在Java环境中调度进程的最著名的解决方案,但是您有很多选择。检查此列表: Quartz 是一个开源作业调度系统,可以与几乎任何J2EE或J2SE应用程序集成或一起使用。Quartz可用于创建简单或复杂的时间表。 Jcrontab 旨在扩展并

  • 问题内容: 我有以下使用类的课程。所以我想做的是,在运行cp1实例处理方法的同时,我要并行运行。 但是,我要按顺序cp1,所以我要它运行并完成,如果cp2没有完成或失败,那就很好。如果确实失败,我想加入结果。该示例中未返回任何内容,但我想返回结果。 为此,应该使用TaskExecutor吗?还是线程? 我只希望cp2与cp1并行运行。或者,如果我添加更多内容,例如说cp3,我希望它也可以与cp1并

  • 本文向大家介绍Laravel定时任务的每秒执行代码,包括了Laravel定时任务的每秒执行代码的使用技巧和注意事项,需要的朋友参考一下 laravel中的任务调度可以不将每条命令都写入crontab,便于管理维护,而且可以基于laravel框架环境运行,而不需写独立的脚本执行,非常方便,但是最小的执行间隔也是一分钟,要想达到每秒执行的效果,就要借助shll脚本了,在shell脚本里循环60次每秒执

  • 我正在从事一个spring boot项目,以自动化与gradle的集成测试。我最近开始在一家新企业工作,我的同事们按如下方式运行集成测试:在构建中。gradle文件有一个集成测试任务 启动任务后,应用程序开始在指定端口运行,然后打开postman,导入集合并运行测试。 我的工作是找到一种方法来跳过额外的点击,即自动运行邮递员集合。第一个想法是使用postman-run gradle插件,但由于企业