首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我可以将并发限制在*特定的*活动函数上吗?

我可以将并发限制在*特定的*活动函数上吗?
EN

Stack Overflow用户
提问于 2020-08-12 18:02:53
回答 1查看 467关注 0票数 2

我有一个耐用的功能应用程序,运行在Azure的优质弹性服务计划,其中我

  • (a)执行一次性任务,返回可能大量的结果
  • (b)对(a)部分的每个结果进行一些独立处理

(a)部分依赖于外部数据库,当我遇到一定数量的并发请求时,该数据库就会开始拒绝请求。

第(b)部分没有这样的第三方依赖性,理论上应该能够无限期地扩展。

我知道你有能力限制:

  • 我的服务计划将扩展到的实例的最大数目
  • 每个实例的并发请求数。
  • 并发活动函数的个数

但是,使用这些选项中的任何一个来限制(a)也会限制(b),我希望尽可能同时保留(B)。

是否有一种方法可以限制活动函数(a)的并发调用次数,而不限制(b)的调用次数?

(如果所有其他操作失败,我可以自己跟踪存储中当前执行的次数,作为运行活动(a)的一部分,但我更愿意配置它,或者在可能的情况下能够将其从持久函数框架中驱动--因为它已经在跟踪每种类型的排队活动函数的数量。)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-12 18:31:34

是否有一种方法可以限制活动函数(a)的并发调用次数,而不限制(b)的调用次数?

是的,Azure中有很多工具可以让您构建(a)和(b)的发布/订阅隔离。这里的错误可能是认为(a)的结果需要在进程中/与接受/处理这些结果的使用者同步处理。

换言之,如果(b)项有很大机会不能跟进(a)项所取得的讯息,我会考虑将(a)项的资料取得工作与透过队列或日志技术处理(b)项资料的工作分开处理。

集中注意(b):

  • 如果(b)需要命令或事务语义(即确切的一次,保证),那么可以使用Azure服务总线对命令进行排队,直到它们被处理,并且消息的使用者可以使用订阅独立于(a)中的消息生成进行缩放。想想RabbitMQ吧。
  • 如果(b)能够处理不太可靠的保证,例如至少一次语义,那么Azure活动中心将允许您在多个并发使用者之间划分消息。想想卡夫卡。

其他选择也存在,例如存储队列(低成本)和事件网格(大量订户协议)。

因此,如果您担心获取和处理数据的能力之间存在吞吐量差异,则TL;博士将缓冲处理过程中积累的数据。

有趣的是,如果传递到(a)的过程本身是一个队列,那么您只需要关注(b)的性能。队列的金科玉律是,如果您没有处理数据的能力,则将数据留在队列中(因为您只需要再次缓冲它)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63382338

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档