ylbtech-Jasper:API / API 策略和最佳做法
1.返回顶部
1、

API 策略和最佳做法

Cisco Jasper 已经建立了一项 API 公平使用策略,确保所有 Control Center 用户都可以获得最佳的体验。任何使用 Control Center API 的客户端代码都必须遵守下述限制规定。

并发连接

Cisco Jasper 建议企业避免进行并发处理,因为它可能会显著降低响应速度。我们建议仅在单线程应用程序或例程中使用 API。在多线程情况下使用 API 的账户可能会受到限流或其他限制,具体视环境而定。

策略 使用单线程代码 - 一次一项 API 调用

每秒调用数

Cisco Jasper 通过限制账户每秒可以进行的 API 调用数来确保可靠的 API 性能。如果您的账户超出限制,则在测量期间(一秒)内的后续 API 调用将根据 API 类型获得下表中显示的响应。经过适当的延迟后,程序应该重试 API 调用。

API 类型 返回代码 消息
REST 40000029 超出资费限制
SOAP 400101 许可已超出 API 调用的资费限制

随着我们不断地调整优化平台以提高速度和可靠性,Cisco Jasper 可能会不时更新每秒调用数限制。如果您使用以下所述的最佳做法(单线程代码、动态速率限制等),这项限制将不会产生影响。需要时,运营商可以提供有关这项限制的更多详细信息。

请注意,此限制同时包括账户和账户的客户进行的 API 调用。例如,如果某账户有两位 API 用户,他们及其 5 位客户同时进行了 API 调用, Control Center 会将该账户的每秒调用总数计为 7 个。最初的 API 调用会成功,但是在达到限制之后,其余的 API 调用将返回上面显示的其中一条消息。

这个限制也适用于 REST 和 SOAP API 调用的组合。例如,假设某个账户同时进行了 1 次 REST API 调用和 1 次 SOAP API 调用,同时该账户的其中一位客户进行了一次 REST API 调用。Control Center 会将该账户的每秒调用数计为 3 个。

策略。使用动态速率限制和其他最佳做法来遵守这项限制。

最佳做法

以下技巧可帮助您避免 API 使用过量时可能发生的限流或其他用量限制。

添加速率限制代码

避免超过每秒调用数限制的最佳做法便是创建单线程代码。但是,您可能会遇到无法避免的情况。例如:

  • 多个 API 用户都在进行调用。
  • 您需要同时使用 REST 和 SOAP 函数。
  • 您有大量需要多线程进程的调用。

在这些情况下,建议创建速率限制例程,用于监控和调节您的 API 调用。例如,如果账户在处理调用时收到多个错误消息,您可以在 API 调用之间引入一个等待时间。您可以增加这个等待时间,直到错误不再出现。

虚拟代码示例。以下虚拟代码将演示速率限制代码的作用方式。

// DISCLAIMER: THIS EXAMPLE IS PROVIDED FOR ILLUSTRATION PURPOSES ONLY,
// AND WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED WHILE ( <<list is not empty>> )
{
// API_call attempts to perform an action to update the DEVICE status
// it returns the API response code
response = API_call( <<list element>> ) // API call returns the "limit exceeded" error, increase loop delay
IF ( response == ERROR_LIMIT_EXCEEDED )
{
delay += ADJUST_DELAY_INCR
}
ELSE
{ // ensure delay never goes below 0
IF ( delay > ADJUST_DELAY_DECR )
{
delay -= ADJUST_DELAY_DECR
}
ELSE
{
delay = 0
}
} sleep( delay )
}

调整调用频率

通过 API 跟踪设备用量时,必须将您的 API 调用频率与运营商的更新频率保持一致

例如,如果您的运营商每 6 小时更新一次用量信息,则通过 API 请求信息的频率不能超过每 6 小时一次。此外,用量数据可用的时间与 Control Center 从运营商接收到该用量数据的时间之间通常会有延迟。有时,延迟可能长达 24 小时。

使用缓存

Cisco Jasper 鼓励使用本地缓存。例如,可以创建一个简单的例程来每天检查一次缓存,而不是每加载一次页面就调用一次 API。

使用筛选器限制 API 调用

在执行程序前通过检查特定条件来避免不必要的 API 调用。例如:

  • 如果设备已停用,请勿检查用量。
  • 如果客户未请求设备用量,请勿每小时检查一次。

延长搜索之间的间隔时间

如果收到为空或者未改变的 API 响应,请延长查询间隔。例如,考虑将查询从每两个小时一次更改为一天一次。

2、
2.返回顶部
 
3.返回顶部
 
4.返回顶部
 
5.返回顶部
 
 
6.返回顶部
 
作者:ylbtech
出处:http://ylbtech.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

Jasper:API / API 策略和最佳做法的更多相关文章

  1. Google advertiser api开发概述——最佳做法&建议

    最佳做法 本指南介绍了一些最佳做法,您可以运用它们来优化 AdWords API 应用的效率和性能. 日常维护 为确保您的应用不间断运行,可采取以下做法: 确保 AdWords API 中心中的开发者 ...

  2. Jasper:API / 后向兼容性

    ylbtech-Jasper:API / 后向兼容性 1.返回顶部 1. 后向兼容性 为了给客户提供创新的业务解决方案,Cisco Jasper 会定期扩展我们 API 框架的功能.我们会尽最大努力确 ...

  3. Atitit.研发管理---api版本号策略与版本控制

    Atitit.研发管理---api版本号策略与版本控制 1. 1.2.1版本概述1 2. 3主版本号策略2 3. 1PATCH版本策略2 3.1. 1.2.2.1次版本号策略2 表3-1 APR中支持 ...

  4. restful api的10个最佳实践

    Web API在过去的几年里非常盛行,因为它有着语法简单.规范化和轻量级的优点,因为得到广泛的推崇,很多过往的技术手段都慢慢转换为使用Web API来开发.而Web API通常使用的设计方式是REST ...

  5. .NET API 接口数据传输加密最佳实践

    .NET API 接口数据传输加密最佳实践 我们在做 Api 接口时,相信一定会有接触到要给传输的请求 body 的内容进行加密传输.其目的就是为了防止一些敏感的内容直接被 UI 层查看或篡改. 其实 ...

  6. [转]移动App测试中的最佳做法

    Daniel Knott 用过各种不同编程语言和软件质量保证工具.他在软件开发和测试方面干了七年,自2010年起,他一直在德国汉堡的XING AG公司就职,几个项目里,比如XING调查和XING建议, ...

  7. 移动App测试中的最佳做法

    一说起软件测试,测试员想到肯定是去检查文件,功能,API,性能并确定软件是否安全,以及关于软件特定部分的其他事项.但是对于移动测试,测试员不得不基于用户移动使用模式考虑移动相关的功能. 本文是基于我的 ...

  8. 【转】移动App测试中的最佳做法

    一说起软件测试,测试员想到肯定是去检查文件,功能,API,性能并确定软件是否安全,以及关于软件特定部分的其他事项.但是对于移动测试,测试员不得不基于用户移动使用模式考虑移动相关的功能. 本文是基于我的 ...

  9. 【译】Permissions Best Practices Android M权限最佳做法

    Permissions Best Practices PreviousNext In this document Consider Using an Intent Don't Overwhelm th ...

随机推荐

  1. RecyclerView onItemClick button和布局都有单击事件时的处理方式

    RecyclerView为了给开发人员提供更大的自由度.没有默认的提供onItemClick接口. 网上有一种比較简单的实现方式 , 适用于不须要针对item里面某个button做特殊处理的情况 我眼 ...

  2. uva 11127(暴力)

    题意:给出一个字符串,包含0.1.*,当中×是能够替换成0或者1的,假设字符串的某个子串S有SSS这种连续反复3次出现,不是Triple-free串,问给出的字符串能够形成多少个非Triple-fre ...

  3. ios You app information could not be saved. Try again. If the problem persists, contact us

    ios You app information could not be saved. Try again. If the problem persists, contact us  大概意思:你的a ...

  4. C++类的大小(转)

    一个空类class A{};的大小为什么是1,因为如果不是1,当定义这个类的对象数组时候A objects[5]; objects[0]和objects[1]就在同一个地址处,就无法区分. 单继承 # ...

  5. 几个关于tableView的问题解决方式整合

    近期遇到关于tableView的问题的整合.部分比較白痴.仅仅是初学easy犯~ 1.关于tableView左边空余15像素的问题. 2.关于tableView多余切割线隐藏的问题: 3.关于tabl ...

  6. Win8 使用经验之飞鸽传书

    参考资料: http://jingyan.baidu.com/article/c1a3101eb52cd8de656deba6.html Win8的UAC关闭不生效?彻底关闭Win8的UAC? 1. ...

  7. django(一)--- 安装django

    准备好虚拟环境:Python开发虚拟环境 安装前的准备 1. 下载django:django下载 本文使用的是django-1.5.9(不同版本号之间的差别还是比較大的.别搞错了) 2.准备djang ...

  8. 用字符串处理函数中的比较函数strcmp做的一个密码登录验证

    正确返回0 1大返回正数 2大返回负数  1,2表示输入字符串1和字符串2 根据ASCII码大小来判断 代码: #include<stdio.h> #include<string.h ...

  9. tomcat 代码集

    Tomcat类是整个tomcat的起点,负责加载所有的配置信息以及把配置信息解析转换成tomcat组件对象. Context addWebapp(String contextPath, String ...

  10. 05 referer头与防盗链

    像上图中的这个效果,当我们在网页里引用站外图片时,常出现这样的情况. ??? 服务器是怎么样知道,这个图片是在站外被引用的呢? 还有在网站的统计结果,统计用户从何而来,如下图 ??? 统计时,是如何得 ...