# 限频说明

本文介绍美团企业版开放平台API接口限流的触发条件和解决方法。 为防止企业侧应用程序异常或是接口使用不当,引发美团企业版服务器负载异常,默认情况下,每个API接口调用都有频率限制(默认限制为100次/分钟,100000次/天),当超过任一维度限制时,调用对应接口时都会返回对应错误提示。

# 1.接口每分钟调用次数限制

# 触发条件

调用每个接口,超过该接口每分钟调用次数限制,将会触发限流。触发限流之后,接口直接返回错误码12000。

{
    "msg": "访问频率过高: 访问频率过高",
    "status": 12000
}

# 解决方法

  • 减少非必要调用
    结合自身业务,判断接口调用是否必须,尽量减少非必要调用。例如:批量员工同步接口,个别企业在同步人员时,采用定时任务,定时通过该接口全量同步人员信息至美团企业版。不建议采用以上方法,一者人员同步不及时;二者增加了双方服务器的负载。建议做法:当企业侧有人员发生变更时,只同步变化的人员信息至美团企业版。
  • 批量调用
    美团企业版提供的API接口中,有部分是批量接口,可以调用一次接口,同步多条数据至美团企业版(批量接口单次同步条数上限,参考每个接口的具体说明),可以减少接口调用次数,降低出现被限频的概率。
  • 主动限流
    主动限流,是解决限频的最有效方法,建议从以下几个方法入手:
    1.单机调用休眠,针对即时性要求不高,且是单个服务器批量数据同步,可以在程序中,调用一次接口,让程序休眠600毫秒,然后继续执行;
    2.单机调用限流,如果是单个服务器调用美团企业版API接口,可以使用类似Guava RateLimiter的限流sdk,来自由控制调用频率;
    3.分布式调用限流,如果是多个服务器调用美团企业版API接口,可以使用分布式缓存进行计数,其中缓存的key是当前的分钟级时间戳,value就是调用次数,如果调用次数达到限频上限,则让程序停止调用,待到下一分钟,继续执行。
  • 保底策略
    为了避免影响正常业务,对接过程中应该对美团企业版API接口每分钟限频这一异常场景,进行捕捉处理。

# 2.接口每日调用次数限制

# 触发条件

调用每个接口,超过该接口每日调用次数限制,将会触发限流。触发限流之后,接口直接返回错误码30000。

{
  "msg": "访问次数超过配额: 访问次数超过配额",
  "status": 30000
}

# 解决方法

  • 减少非必要调用
    参考每分钟调用次数限制解决方法:减少非必要调用
  • 批量调用
    参考每分钟调用次数限制解决方法:批量调用
  • 主动限流
    主动限流,是解决限频的最有效方法,建议从以下几个方法入手:
    1.单机调用限流,如果是单个服务器调用美团企业版API接口,可以使用类似Guava RateLimiter的限流sdk,来自由控制调用频率,避免达到每日限额;
    2.分布式调用限流,如果是多个服务器调用美团企业版API接口,可以使用分布式缓存进行计数,其中缓存的key是当前日期,value就是调用次数,如果调用次数达到限频上限,则让程序停止调用,待到第二天,继续执行。
  • 保底策略
    为了避免影响正常业务,对接过程中应该对美团企业版API接口每日限频这一异常场景,进行捕捉处理。其影响比每分钟调用次数限频更加严重,从被限频那一刻起,到次日凌晨,限流才会被解除。

# 3.其它特殊情况

如果通过以上提到的方法,仍然无法解决限频问题,可以联系美团企业版对接人协商解决方案。

上次更新: 4/22/2024, 4:15:08 PM