【Azure API 管理】APIM中的Policy是否有调用速率的方法(熔断机制)

简介: 【Azure API 管理】APIM中的Policy是否有调用速率的方法(熔断机制)

问题描述

APIM中的Policy是否有调用速率的方法(熔断机制)

问题解答

APIM的限制速率的方式有以下方式:

rate-limit-by-key 策略可以对调用速率进行限制,使指定时段的调用不超出指定的数目,避免单个密钥的 API 使用量暴增。 密钥的值可以是任意字符串,通常使用策略表达式来提供密钥。 可以添加可选增量条件,指定在决定是否到达限制值时应该进行计数的请求。 超过此调用速率时,调用方会收到 429 Too Many Requests 响应状态代码。

 

如果需要基于后端应用响应时间来判断,可以通过在inbound和outbound中分别设置当前的时间戳并在increment condition中判断两个时间戳的差值来判断后台响应时间。

示例如:

<policies>
    <inbound>
        <base />
        <set-variable name="intime" value="@(DateTime.Now)" />
        <rate-limit-by-key calls="5" renewal-period="10" counter-key="@(context.Subscription?.Key ?? "anonymous")" increment-condition="@(Convert.ToDouble((context.Variables.GetValueOrDefault<DateTime>("outtime") - context.Variables.GetValueOrDefault<DateTime>("intime")).TotalMilliseconds.ToString()) > 5000 )" />
    </inbound>
    <backend>
        <base />
    </backend>
    <outbound>
        <base />
        <set-variable name="outtime" value="@(DateTime.Now)" />
    </outbound>
    <on-error>
        <base />
    </on-error>
</policies>

说明:

此policy会探测10秒内是否有5个请求“响应时间”超过5s,如果超过则限流。(这个响应时间为执行两次set-variable的时间,分别发生在执行inbound策略和outbound策略时)

 

参考资料

API Management policy expressions:https://docs.microsoft.com/en-us/azure/api-management/api-management-policy-expressions#CLRTypes

按密钥限制调用速率 : https://docs.azure.cn/zh-cn/api-management/api-management-access-restriction-policies#LimitCallRateByKey

 

相关文章
|
3月前
|
自然语言处理 算法 Java
地址描述转换为坐标点不使用API,有什么转换的方法?
地址描述转换为坐标点不使用API,有什么转换的方法?
346 64
|
2月前
|
测试技术 API 项目管理
API测试方法
【10月更文挑战第18天】API测试方法
62 1
|
23天前
|
API Python
【Azure Developer】分享一段Python代码调用Graph API创建用户的示例
分享一段Python代码调用Graph API创建用户的示例
45 11
|
24天前
|
JSON 安全 API
Python调用API接口的方法
Python调用API接口的方法
112 5
|
1月前
|
算法 中间件 API
使用漏桶和令牌桶实现API速率限制
本文介绍如何在 Go 语言的 Gin 框架中使用漏桶算法和令牌桶算法实现 API 限流,以保护系统资源,防止过载和恶意攻击,确保服务稳定。通过具体代码示例展示了两种算法的应用方法。
29 2
|
2月前
|
Java 大数据 API
别死脑筋,赶紧学起来!Java之Steam() API 常用方法使用,让开发简单起来!
分享Java Stream API的常用方法,让开发更简单。涵盖filter、map、sorted等操作,提高代码效率与可读性。关注公众号,了解更多技术内容。
108 5
|
2月前
|
JavaScript 前端开发 Java
多种语言请求API接口方法
每种语言和库的选择取决于具体需求、项目环境以及个人偏好。了解这些基本方法,开发者就可以根据项目需求选择合适的语言和库来高效地与API交互。
51 1
|
2月前
|
安全 测试技术 API
一图看懂API测试9种方法
一图看懂API测试九种方法:冒烟测试验证基本功能,功能测试确保符合规格,集成测试检查组件协同工作,回归测试防止新变更引入问题,负载测试评估性能稳定性,压力测试挑战极限负载,安全测试发现并修复漏洞,用户界面测试确保UI与API协调,模糊测试提升异常数据处理鲁棒性。
|
4月前
|
API 开发工具 网络架构
【Azure Developer】如何通过Azure Portal快速获取到对应操作的API并转换为Python代码
【Azure Developer】如何通过Azure Portal快速获取到对应操作的API并转换为Python代码
|
4月前
|
UED 开发工具 iOS开发
Uno Platform大揭秘:如何在你的跨平台应用中,巧妙融入第三方库与服务,一键解锁无限可能,让应用功能飙升,用户体验爆棚!
【8月更文挑战第31天】Uno Platform 让开发者能用同一代码库打造 Windows、iOS、Android、macOS 甚至 Web 的多彩应用。本文介绍如何在 Uno Platform 中集成第三方库和服务,如 Mapbox 或 Google Maps 的 .NET SDK,以增强应用功能并提升用户体验。通过 NuGet 安装所需库,并在 XAML 页面中添加相应控件,即可实现地图等功能。尽管 Uno 平台减少了平台差异,但仍需关注版本兼容性和性能问题,确保应用在多平台上表现一致。掌握正确方法,让跨平台应用更出色。
62 0