我有一个耐用的功能应用程序,运行在Azure的优质弹性服务计划,其中我
(a)部分依赖于外部数据库,当我遇到一定数量的并发请求时,该数据库就会开始拒绝请求。
第(b)部分没有这样的第三方依赖性,理论上应该能够无限期地扩展。
我知道你有能力限制:
但是,使用这些选项中的任何一个来限制(a)也会限制(b),我希望尽可能同时保留(B)。
是否有一种方法可以限制活动函数(a)的并发调用次数,而不限制(b)的调用次数?
(如果所有其他操作失败,我可以自己跟踪存储中当前执行的次数,作为运行活动(a)的一部分,但我更愿意配置它,或者在可能的情况下能够将其从持久函数框架中驱动--因为它已经在跟踪每种类型的排队活动函数的数量。)
发布于 2020-08-12 18:31:34
是否有一种方法可以限制活动函数(a)的并发调用次数,而不限制(b)的调用次数?
是的,Azure中有很多工具可以让您构建(a)和(b)的发布/订阅隔离。这里的错误可能是认为(a)的结果需要在进程中/与接受/处理这些结果的使用者同步处理。
换言之,如果(b)项有很大机会不能跟进(a)项所取得的讯息,我会考虑将(a)项的资料取得工作与透过队列或日志技术处理(b)项资料的工作分开处理。
集中注意(b):
其他选择也存在,例如存储队列(低成本)和事件网格(大量订户协议)。
因此,如果您担心获取和处理数据的能力之间存在吞吐量差异,则TL;博士将缓冲处理过程中积累的数据。
有趣的是,如果传递到(a)的过程本身是一个队列,那么您只需要关注(b)的性能。队列的金科玉律是,如果您没有处理数据的能力,则将数据留在队列中(因为您只需要再次缓冲它)。
https://stackoverflow.com/questions/63382338
复制相似问题