InterSystems API 管理器简介(+ 网络研讨会)

我们最近发布了 InterSystems API Manager (IAM),它是 InterSystems IRIS 数据平台的一个新组件,可提供跨 IT 基础设施的 Web API 流量的可见性、控制和管理。

在本文中,我将向您展示如何设置 IAM 并演示 IAM 提供的众多功能中的一些功能。 InterSystems API 管理器允许您:

  • 监控 API,了解谁使用 API、哪些 API 最受欢迎、哪些 API 需要改进。
  • 控制谁使用 API 并限制 API 使用,从简单的访问限制到基于请求的限制 - 您可以进行自定义控制,并且可以快速响应不断变化的 API 使用模式。
  • 使用集中式安全机制(例如 OAuth2.0、LDAP 或密钥令牌身份验证)保护 API。
  • 通过开放专用的开发者门户,让第三方开发者更轻松,并为他们提供卓越的 API 体验。
  • 扩展 API 并确保最小的响应延迟。

API 管理对于向 SOA 或微服务架构的过渡至关重要,它可以简化各个(微)服务之间的集成,使它们可供所有外部和内部消费者使用。 因此,新的 API 变得更容易创建、维护和使用。

如果您已经在使用 InterSystems IRIS,则可以将 IAM 选项添加到您的许可证中。 IAM 选项对 InterSystems IRIS 客户免费,但您必须向 InterSystems 请求新的许可证密钥才能开始使用 IAM。

如果您尚未使用 InterSystems IRIS,但计划尝试 InterSystems API Manager,请联系 InterSystems。

入门和安装

InterSystems 客户可以从网站下载 IAM 发行版 WRC 部分“软件分发”并作为 Docker 容器运行。 最低系统要求:

首先,你需要下载Docker镜像(重要!WRC的压缩包不是Docker镜像,你需要解压它,里面有一个Docker镜像):

docker load -i iam_image.tar

此命令将使 IAM 映像可供以后在您的服务器上使用。 IAM 作为单独的容器运行,因此您可以独立于 InterSystems IRIS 对其进行扩展。 运行 IAM 需要访问 InterSystems IRIS 才能下载许可证。

设置 InterSystems IRIS:

  • 启用网络应用程序 /api/IAM
  • 启用用户 IAM
  • 更改用户密码 IAM

现在让我们启动 IAM 容器。 在存档中您将找到脚本 iam-setup 适用于 Windows 和 Unix(以及 Mac)。 这些脚本将帮助您正确设置环境变量,从而允许 IAM 容器与 InterSystems IRIS 建立连接。 以下是在 Mac 上运行的脚本示例:

source ./iam-setup.sh 
Welcome to the InterSystems IRIS and InterSystems API Manager (IAM) setup script.
This script sets the ISC_IRIS_URL environment variable that is used by the IAM container to get the IAM license key from InterSystems IRIS.
Enter the full image repository, name and tag for your IAM docker image: intersystems/iam:0.34-1-1
Enter the IP address for your InterSystems IRIS instance. The IP address has to be accessible from within the IAM container, therefore, do not use "localhost" or "127.0.0.1" if IRIS is running on your local machine. Instead use the public IP address of your local machine. If IRIS is running in a container, use the public IP address of the host environment, not the IP address of the IRIS container. xxx.xxx.xxx.xxx               
Enter the web server port for your InterSystems IRIS instance: 52773
Enter the password for the IAM user for your InterSystems IRIS instance: 
Re-enter your password: 
Your inputs are:
Full image repository, name and tag for your IAM docker image: intersystems/iam:0.34-1-1
IP address for your InterSystems IRIS instance: xxx.xxx.xxx.xxx
Web server port for your InterSystems IRIS instance: 52773
Would you like to continue with these inputs (y/n)? y
Getting IAM license using your inputs...
Successfully got IAM license!
The ISC_IRIS_URL environment variable was set to: http://IAM:****************@xxx.xxx.xxx.xxx:52773/api/iam/license
WARNING: The environment variable is set for this shell only!
To start the services, run the following command in the top level directory: docker-compose up -d
To stop the services, run the following command in the top level directory: docker-compose down
URL for the IAM Manager portal: http://localhost:8002

正如您所看到的,完整的映像名称、IP 地址、InterSystems IRIS 端口和 IAM 用户的密码就是您开始使用所需的全部信息。

您可以手动设置环境变量,而不是运行脚本:

ISC_IAM_IMAGE=intersystems/iam:0.34-1-1
ISC_IRIS_URL=http://IAM:<PASS>@<IP>:<PORT>/api/iam/license

发射

现在让我们通过运行以下命令来启动 IAM:

docker-compose up -d

此命令组织 IAM 容器并确保一切正常运行。 使用以下命令检查容器的状态:

docker ps

在浏览器中打开管理界面 localhost:8002.

InterSystems API 管理器简介(+ 网络研讨会)

它现在是空的,因为它是一个全新的节点。 让我们改变这一点。 IAM 支持将 API 划分为模块和/或命令的工作空间概念。 转到我们将用于实验的“默认”工作区。

InterSystems API 管理器简介(+ 网络研讨会)

该工作区的请求数量仍然为零,但您将在左侧菜单中了解基本的 IAM 概念。 前两个元素:服务和路由是最重要的:

  • 服务是我们希望向消费者提供访问权限的 API。 因此,InterSystems IRIS 中的 REST API 是一个服务,例如,如果您想使用 Google API,它也是一个服务。
  • 路由决定传入请求应转发到哪个服务。 每个 Route 都有一组特定的条件,如果满足这些条件,则将请求发送到相应的 Service。 例如,路由可以匹配 IP、发件人域、HTTP 方法、URI 的一部分或这些示例的组合。

服务

让我们创建一个 InterSystems IRIS 服务,具有以下值:

领域

使用说明

姓名
鸢尾花
服务名称

主持人
IP
InterSystems IRIS 服务器主机或 IP

端口
52773
InterSystems IRIS 服务器 Web 端口


/api/工作室
根路径

协议
HTTP
协议

将其余值保留为默认值。 单击按钮 Create 并记下创建的Service的ID。

路线

现在让我们创建一条路线:

领域

使用说明


/api/工作室
根路径

协议
HTTP
协议

服务号
指导从 3
服务(上一步中的 ID)

将其余值保留为默认值。 单击按钮 Create 并记下创建的Route的ID。 默认情况下,IAM 侦听端口 8000 上的传入请求。现在请求发送到 http://localhost:8000 并开始于 /api/atelier 被重定向到 InterSystems IRIS。

测试

让我们尝试在 REST 客户端中创建一个请求(我正在使用 邮差).

InterSystems API 管理器简介(+ 网络研讨会)

让我们发送一个 GET 请求到 http://localhost:8000/api/atelier/ (不要忘记 / 位于最后)并收到来自 InterSystems IRIS 的响应。 每个请求都会通过 IAM 收集指标:

  • HTTP 状态代码。
  • 延迟。
  • 监控(如果配置)。

我又发出了一些请求(包括对不存在的端点(例如 /api/atelier/est/ )的两个请求),结果立即在仪表板中可见:

InterSystems API 管理器简介(+ 网络研讨会)

使用插件

现在我们已经配置了路由,我们可以管理我们的 API。 我们可以添加功能来补充我们的服务。

更改 API 行为的最常见方法是添加插件。 插件隔离各个功能,并且可以全局连接到 IAM,也可以仅连接到单个实体,例如用户(用户组)、服务或路由。 我们首先将速率限制插件添加到路由中。 为了在插件和路由之间建立连接,我们需要路由的唯一标识符(ID)。

限制请求数量

单击左侧边栏菜单中的插件。 您可以在此屏幕上看到所有活动的插件,但由于此 IAM 服务器是新的,因此还没有活动的插件。 因此,单击“新建插件”继续下一步。

我们需要的插件属于“流量控制”类别,名为“速率限制”。 选择它。 您可以在这里设置很多设置,但我们只关心两个字段:

领域

使用说明

路由ID
ID
路线编号

配置分钟
5
每分钟请求数

就这样。 该插件已配置并处于活动状态。 请注意,我们可以选择不同的时间间隔,例如一分钟、一小时或一天。 这些设置可以组合(例如,每小时 1000 个请求,同时每分钟 100 个请求)。 我选择分钟是因为这样可以轻松检查插件的功能。

如果您在 Postman 中再次发送相同的请求,您将看到返回的响应带有 2 个附加标头:

  • XRateLimit-限制分钟:5
  • XRateLimit 剩余分钟:4

这告诉客户端它每分钟最多可以发出 5 个请求,并且可以在当前时间段内再发出 4 个请求。

InterSystems API 管理器简介(+ 网络研讨会)

如果您一遍又一遍地发出相同的请求,您最终将耗尽可用配额,并收到 HTTP 状态代码 429 以及以下响应正文:

InterSystems API 管理器简介(+ 网络研讨会)

稍等片刻,您就可以再次提交请求。

这是一种方便的机制,允许您:

  • 保护后端免受负载激增的影响。
  • 告诉客户他们可以提出多少请求。
  • 通过 API 货币化。

您可以设置不同时间间隔的值,从而平滑特定时间段内的 API 流量。 假设您在特定路由上每小时允许 600 个请求。 平均每分钟有 10 个请求。 但没有什么可以阻止客户端在一小时的第一分钟内完成所有 600 个请求。 也许这就是你所需要的。 您可能希望在一小时内获得更均匀的负载。 通过设置字段值 config.minute 值 20 可确保您的用户每分钟发出的请求不超过 20 个,每小时发出的请求不超过 600 个。 与每分钟 10 个请求的完全平均流量相比,这允许在一分钟间隔内出现小峰值,但用户不能使用一分钟的每小时配额。 现在他们至少需要 30 分钟才能使用所有请求。 客户端将在每个指定的时间间隔收到额外的标头,例如:

HTTP 标头

X-RateLimit-限制小时
600

X-RateLimit-剩余小时
595

X-RateLimit-限制分钟
20

X-RateLimit-剩余分钟
16

当然,根据您想要实现的目标,有许多不同的方法来配置查询限制。

发现

我就讲到这里,我认为关于 InterSystems API Manager 的第一篇文章已经有足够的材料了。 我们只使用了 40 多个插件中的一个。 您还可以使用 IAM 做更多有趣的事情:

  • 为所有 API 添加中央身份验证机制。
  • 使用负载均衡器跨多个服务扩展负载。
  • 在完整更新之前向测试受众添加新功能和错误修复。
  • 为内部和外部开发人员提供记录所有 API 的专用 Web 门户。
  • 缓存请求以减少响应时间并减轻系统后端的负载。

引用

研讨会

我们邀请您参加“使用 InterSystems API 管理进行 API 管理”网络研讨会,该研讨会将于 21 月 10 日莫斯科时间 00:3 (GMT+XNUMX) 举行。
InterSystems API Manager (IAM) 是 InterSystems IRIS 数据平台的一个新组件,可监控、控制和管理 IT 基础设施内 Web API 的流量。 在网络研讨会上,我们将演示 InterSystems API 管理的关键功能:

  • API流量监控工具。
  • API流量控制,包括带宽控制、限制API调用数量、维护允许和拒绝的IP地址列表等。
  • API安全配置工具。
  • 用于发布交互式 API 文档的开发人员门户。
  • 对 API 的单点访问。

该网络研讨会面向架构师、开发人员和系统管理员。

需要注册!

来源: habr.com

添加评论