API使软件之间的通讯更加便捷,使得基于软件支撑的商业模式得以落地,如移动支付,从而促进API经济的繁荣。现在开放API服务已经成为软件服务的主要趋势,对于API提供者而言,API服务的安全性则是需要重点考虑的。但互联网上的攻击,或者某次促销导致流量暴增,超出服务承受能力的情况无可避免,在这种情况下,怎么保护后端服务不受影响,服务不被中断?
API网关在设计之初,就重点考虑了安全性的问题,流控作为API网关的主要功能,能从API分组、API、用户、APP四个维度进行流量控制,当流量超过设置阈值时,API网关会直接返回错误信息(错误码403,有明确的因流控被拒的错误信息)给请求者,不会再继续调用API提供者的后端服务,从而保护了后端服务不被攻击。同时我们还具有精准流控,实时生效的特点。
API分组流控
每个API分组在建立的时候,默认设置了分组的QPS为500,指该分组下所有API的QPS之和为500,目前该值没有开放给用户编辑,如果该值不能满足你的业务情况,请通过提交工单的方式联系我们修改。
API流控设置
API流控用于通道内的业务分层,API提供者可以根据后端服务能力和业务的重要程度来区分API,可分别设置不同的流量控制,以保证重要业务的延续性。API流控须小于分组流控。
用户流控用于在API上的用户分层,API提供者可以为普通用户设置流量控制,防止用户间相互挤占资源。用户流控须小于API流控。
同理,APP流控类似。APP流控须小于用户流控。
具体操作方法如下:
1、建立流控策略
API流量控制指单位时间内的调用次数控制
单位时间:目前支持分钟、小时、天三个粒度的流量控制。
分钟:适合配置在调用频繁,请求量大的API上,防攻击,因为不能长时间中断调用,所以单位时间不能设置太长。
小时、天:级别的适合配置在敏感型API上,比如发短信API,获取验证码API等,限制调用频率。
2、设置特殊流控策略
上面的流控是针对普通用户设置的默认流控,如果还有例外的情况,我们支持给用户和APP设置特殊流控。特殊流控,主要用于对用户或APP分层,API提供者可以设置API上某个用户(或某个APP)的单独流控,可以大于或小于用户流控。
在“流控管理”详情页面可分别添加“特殊应用”和“特殊阿里云用户”的流控。
3、绑定API
将策略绑定到API上,即可生效。针对不同环境的API(如测试、线上),可分别绑定不同的API策略。