【问题标题】:Azure web app - how to avoid multiple users triggering the same endpoint at timeAzure Web 应用程序 - 如何避免多个用户同时触发同一个端点
【发布时间】:2022-11-06 20:38:55
【问题描述】:

有什么方法可以限制 azure web app (asp.net web API) 的请求数量? 我有一个运行很长时间的端点,我喜欢在应用程序处理一个请求时避免多个触发器。

谢谢

【问题讨论】:

    标签: asp.net-web-api azure-web-app-service


    【解决方案1】:

    这必须是一个自定义实现,可以通过几种方式完成

    1. 利用队列这涉及通过使用队列将后台进程分离为单独的执行流。因此,您的代码将分为两部分

    • 接收请求并将消息插入队列的 API 端点
    • 监听队列并一一处理消息的单独方法(或服务)

    第二种方法可以在同一个 Web App 中,也可以分成一个 Function App。队列可能位于 Azure Service Bus,您的 Web 应用程序或函数将在其中监听。

    这种方法具有持久性的额外好处,因为如果 Web 应用程序或功能崩溃并且您希望确保所有请求都得到处理,如果消息未在队列中完成,则将按顺序再次处理。

    2.分布式锁这种方法更简单,但缺乏持久性。在这里,您只需使用内存中的队列来处理请求,但要确保一次只处理一个请求,但让该方法获取一个锁,随后的请求将在处理之前等待该锁。

    您可以利用blob storage leases 作为分布式锁的一个选项。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-05
      • 2013-08-25
      • 1970-01-01
      • 1970-01-01
      • 2020-01-13
      • 2012-04-30
      • 2017-06-21
      • 2019-09-14
      相关资源
      最近更新 更多