前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >API的计量与限速 | 将一个Web API纳入API管理 |API Management学习第二篇

API的计量与限速 | 将一个Web API纳入API管理 |API Management学习第二篇

作者头像
魏新宇
发布2018-07-30 14:48:50
8940
发布2018-07-30 14:48:50
举报

前言

本文仅代表作者的个人观点;

本文的内容仅限于技术探讨,不能作为指导生产环境的素材;

本文素材是红帽公司产品技术和手册;

本文分为系列文章,将会有多篇,初步预计将会有26篇。

一、实验背景

在本文中,我们将针对:API Management学习第一篇中编写的Restful API,进行纳管。

参考阅读:

通过Swagger管理API:API Management学习第一篇

在上一小节,我创建了一个restful API,运行在一个pod里,另外一个pod提供数据库。

测试product API服务是否接受请求并返回正确的响应:

返回结果:

二、3scale的安装

在本实验中,我们会利用3 scale做三件事情:

  • 使用3scale AMP公开Products API REST服务
  • 为基本和高级用户创建应用程序计划
  • 为基本用户应用速率限制以控制对API的访问

接下来,我们在现有的OCP上安装3 scale:

oc new-project $OCP_PROJECT_PREFIX-3scale-amp \ --display-name="3scale-amp" \ --description="3scale AMP component"

部署完毕后,pod如下:

登录刚安装好的3scale管理界面:

三、3scale上的基本配置

首先,定义一个API Service,该服务管理上一个实验中配置的Products API业务服务的访问权限。

接下来,创建application plan:

application plan用于授予对特定API和端点的访问权限,限制流量以及通过API使用获利。通过应用程序计划,您可以通过指定速率限制和定价规则来配置API的访问权限。所有申请必须与计划相关联。可以为API定义多个自定义应用程序计划。

接下来,创建另外一个application plan:

接下来,发布两个plan,并设置默认的plan:

定义帐户和用户

接下来,创建应用。

点击创建以后,app key会自动生成:

四、3scale上创建方法和映射

在本系列文章第一篇中,我们通过:http://editor.swagger.io,分析了api的swagger文件。接下来,我们可以使用对Products API的这种理解来定义3scale中的方法,并将这些方法映射到Products API公开的资源。

与此同时,在本实验的后续部分中,我们将使用这些方法来定义速率限制并收集每个Product API资源的利用率指标。

找到刚才创建的API,选择集成:

接下来,选择增加应用的URL。

定义新的metric和method:

增加新的method:

输入信息,创建新的方法:

按照同样的方法,再增加三个方法:

添加成功后,是这个样子:

接下来,创建mapping:

增加mapping如下:

接下来,再为剩下的三个方法增加映射:

增加完效果如下:

远程客户端将通过分配给的apicast阶段和生产服务的路由调用您的Products API。

3scale的默认安装包括到您的apicast服务的通用路由。 我们将删除这些通用路由,并替换为Products API更具体的路由。

创建edge路由:

分配API endpoint.

Private base URL: Route into the products API business service endpoint

这是其实是API 这个pod server的FQDN。

echo -en "\n\nhttp://products-api.david-products-api.svc.cluster.local:8080\n\n"

http://products-api.david-products-api.svc.cluster.local:8080

Staging public base URL: Route to the products APIcast staging endpoint

https://products-staging-apicast-david.apps.example.com:443

Production public base URL: Route to the products APIcast production endpoint

https://https://products-production-apicast-david.apps.example.com:443

API client:

成功:

五、限速

利率限制允许限制对API资源的访问。可以通过使用应用程序计划为单独的开发人员细分配置不同的限制。

一旦有了速率限制,这些限制就会控制开发人员在使用3scale对后端服务进行授权请求调用时收到的响应。限制在管理门户中配置,并在服务调用期间由APIcast网关强制执行。网关从3scale后端接收配置信息,其中包含每个服务中不同应用程序计划的速率限制。

步骤顺序如下:

  • APIcast每5分钟(或配置)从后端刷新最新的API配置。
  • APIcast为授权密钥和指标实现本地内存缓存。
  • 对于后端服务的每个入站请求,APIcast使用异步传输在3scale中向后端侦听器API发出authrep请求。
  • 来自3scale后端的authrep响应更新本地apicast缓存。
  • 如果后端确定已超过速率限制,则APIcast拒绝所有后续入站请求。

在本实验中,您将在Products API的上下文中检查速率限制。

您将创建一个名为ProductsBasicPlan的ApplicationPlan。此应用程序计划仅启用产品API的某些方法。

在本课程的后续实验中,我们会创建一个不同的应用程序计划(名为ProductsPremiumPlan),该计划将启用产品API的所有方法。

在Red Hat管理员门户的3scale中,验证您是否已登录,然后单击API选项卡。

展开Products API。

单击已发布的应用计划

选择ProductsBasicPlan:

我们可以看到添加的

接下来,我们限制创建和删除

对get product限速:

每个小时最多访问5次:

给getallproduct也创建限速:

更新plan:

测试限速:

通过curl测试:

curl "https://products-staging-apicast-david.apps.example.com:443/rest/services/products?user_key=da52bbc0240a9e56cbb6d70d77364a3f"

curl第二次的时候,会有报错,因为限速是一分钟一次:

访问另外一个endpoint的限速效果类似:

魏新宇

  • 红帽资深解决方案架构师
  • 专注开源云计算、容器及自动化运维在金融行业的推广
  • 拥有MBA、ITIL V3、Cobit5、C-STAR、TOGAF9.1(鉴定级)等管理认证。
  • 拥有红帽RHCE/RHCA、VMware VCP-DCV、VCP-DT、VCP-Network、VCP-Cloud、AIX、HPUX等技术认证。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-07-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大魏分享 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档