首页 > 其他分享 >起搏速率限制 API

起搏速率限制 API

时间:2022-09-01 00:23:59浏览次数:78  
标签:请求 起搏 API 起搏器 速率 执行

起搏速率限制 API

今天,大多数应用程序都是 API 驱动的。无论是创建天气预报、金融行情、体育比分提醒,还是翻译当地语言,您都需要连接 3rd 方 API 来访问您需要的数据。 API 通常被计量并限制使用。

设置场景

假设您要检索所有人的天气预报 19000 印度的(大约)邮政编码 (PIN)。一个请求只包含一个邮政编码的预测,最大API调用率为每秒50次。

你不能打 19000 立即请求检索数据。我们需要建立一种按节奏请求的机制。

这篇文章将演示如何创建一个 Pacer(在 Typescript 中),它可以接收所有对 pin 码的请求并以适当的速率访问 API。浏览器和节点端都将与代码兼容。

‍ 编码

最好将 API 调用逻辑和起搏逻辑分开。然后可以在不同的上下文中应用起搏。起搏逻辑很可能包含在一个类中。

起搏器界面

类步行者 接受请求并以给定的速度处理它们。它提供了一种接受请求的方法。请求包含执行它的可执行代码,Pacer 决定何时运行该代码。

使用起搏器

要添加请求,我们必须使用 步伐 实例化后的方法 起搏器 以所需的速率。

实施起搏器

首先,我已经展示了 步伐 方法实现为:

使用上述实现时,pace 方法会在接收到请求后立即执行,类似于没有 pacing 的代码。因此,我们需要更进一步。

微配料

请求必须被批处理并每秒执行一次以进行适当的实施。这种技术被称为微批处理:小批量,频繁执行。为了以可控的方式完成请求,我们需要一个 Queue 和一个 Executor。

队列

一个请求将是 一收到就排队。 我们还需要返回请求结果的 Promise。但是我们不能在不执行请求的情况下解决承诺。

一个 代理承诺, 它将在执行时捕获请求的结果,将被返回。我们需要将其解析和拒绝引用与请求一起存储。

执行

一个可靠的设计选择是将请求执行保持在一个单独的函数中,该函数执行多个排队的请求。现在,我们需要每秒触发一次。

设置超时() 是合理的构造使用比 设置间隔 (),与 设置超时 我们可以控制下一次执行。

调度逻辑

  1. 当一个请求被接受时,它可能会立即被处理,如果没有安排执行,它可能会延迟几毫秒。
  2. 在执行端,在触发请求后,我们检查队列大小,以便以 1s 的延迟调度下一次执行。

Scheduling Logic | Image is partly created using https://www.nomnoml.com

如果请求在一秒钟内完成,则执行工作;在现实世界中几乎不是这种情况。为了使其更有效,我们必须跟踪正在处理的请求数量并相应地调整速度。

下一步是什么?

这是实际的实施。另一种选择是包括重试或失败机制。我还没有想过实现这个功能;感谢您的反馈以改进它。

该代码可在以下位置访问:

[

GitHub - DM8tyProgrammer/api-pacer

您目前无法执行该操作。您使用另一个选项卡或窗口登录。您在另一个选项卡中退出或...

github.com

](https://github.com/DM8tyProgrammer/api-pacer)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/5848/11240100

标签:请求,起搏,API,起搏器,速率,执行
From: https://www.cnblogs.com/amboke/p/16645051.html

相关文章

  • 使用 Gin 框架在 GoLang 中构建 API 服务
    使用Gin框架在GoLang中构建API服务今天我将向你展示如何在Go中构建一个简单的API服务。我们的项目演示将是一个简单的作者和他们的图书库项目。第一步:首先,我......
  • HttpClient和IHttpClientFactory借助第三方库生成的客户端Refit andWebApiClientCore
    理解ASP.NETCore-发送Http请求(HttpClient)  注:本文隶属于《理解ASP.NETCore》系列文章,请查看置顶博客或点击此处查看全文目录前言在.NET中,我们有很多发送Ht......
  • JavaScript之数组常用API
    这篇文章主要帮助大家简单理解数组的一些常用API用法,许多小伙伴常用方法记不住?别急,看完下面的介绍您一定就会明白各个方法是如何用的了......
  • APISpace 空气质量查询API
    本文我就来说说APISpace的空气质量查询API,支持国内3400+个城市的整点观测,并附带空气质量监测点(全国共2335个)的整点观测数据。获取指定城市的整点观测空气质量,包含空气......
  • APISpace 天气预报查询API
    今天就来和大家说说APISpace的天气预报查询API,它支持全国以及全球多个城市的天气查询,包含国内3400+个城市以及国际4万个城市的实况数据;更新频率分钟级别。 这套API......
  • APISpace IP归属地API
    今天我就来和大家说一说APISpace的IP归属地API,它可以根据IP地址查询归属地信息,包含国家、省、市、区县和运营商等信息。IP归属地的应用领域有哪些呢?应用领域1.网络......
  • 数据智能类API推荐
    之前在网上看到了一些很不错的数据智能类的API,今天在这里整理出来分享给大家~百度AI开放平台百度AI开放平台,拥有各种识别类API。APISpace身份证识别OCR,传入身份证照......
  • Error: Could not get apiVersions from Kubernetes
    问题部署pod时遇到问题#helminstallchart.tgzError:CouldnotgetapiVersionsfromKubernetes:unabletoretrievethecompletelistofserverAPIs:metrics.......
  • APISpace送中秋团圆API好礼
    中秋佳节即将来到,APISpace为大家带来了优惠好礼,推荐热门API限时大优惠,同时新用户注册APISpace将获得160元的优惠券大礼包!!  在意味着团团圆圆的中秋,不要忘了给你......
  • 关于分布式全内存数据库RapidsDB主要应用场景?
    分布式全内存数据库RapidsDB主要应用场景包含以下四项:一是大数据平台快速数据检索、分析及计算处理的需求;二是基于磁盘存储的数据库受限于磁盘读写速度,很难满足业务系统低......