<ph type="x-smartling-placeholder"></ph>
您正在查看 Apigee Edge 文档。
转到
Apigee X 文档。 信息
Edge Microgateway v. 3.1.x
受众群体
本主题面向希望使用现有插件的 Edge Microgateway 操作者。 是与 microgateway 一起安装的。还讨论了高峰控制和配额插件, (安装时均包含这些信息)。如果您是一名开发者,希望开发新的 请参阅开发 自定义插件。
什么是 Edge Microgateway 插件?
插件是一个 Node.js 模块,可以为 Edge Microgateway 添加功能。插件模块 遵循一致的模式并存储在 Edge Microgateway 已知的位置,使 Microgateway 可以自动发现和加载这些网络。Edge Microgateway 包含几个现有的 插件,也可以创建自定义插件,如开发自定义插件中所述。
与 Edge 捆绑的现有插件 Microgateway
Edge Microgateway 在安装时提供了一些现有插件。这些 包括:
插件 | 默认处于启用状态 | 说明 |
---|---|---|
分析 | 是 | 将分析数据从 Edge Microgateway 发送到 Apigee Edge。 |
oauth | 是 | 向 Edge Microgateway 添加了 OAuth 令牌和 API 密钥验证。请参阅设置 设置和配置 Edge Microgateway。 |
配额 | 否 | 对发送到 Edge Microgateway 的请求实施配额。使用 Apigee Edge 存储和管理 配额请参阅使用配额插件。 |
尖顶 | 否 | 防范流量高峰和 DoS 攻击。请参阅使用高峰控制插件。 |
标头大写 | 否 | 一个带注释的示例代理,旨在作为指导,帮助开发者编写自定义插件。 请参阅 Edge Microgateway 示例插件。 |
accumulate-request | 否 | 先将请求数据累积到单个对象中,然后再将数据传递给下一个对象 处理程序。这对于编写需要在 单个累积的请求内容对象。 |
accumulate-response | 否 | 将响应数据累积到单个对象中,然后再将该数据传递给下一个对象 处理程序。这对于编写需要在 单个累积的响应内容对象。 |
transform-uppercase | 否 | 转换请求或响应数据。此插件代表 转换插件的实现。示例插件会执行简单的转换 (将请求或响应数据转换为大写);但可以轻松将其调整为 执行其他类型的转换,例如从 XML 到 JSON。 |
json2xm | 否 | 根据接受或内容类型标头转换请求或响应数据。对于 请参阅插件 文档。 |
配额内存 | 否 | 对发送到 Edge Microgateway 的请求实施配额。在本地环境中存储和管理配额 内存。 |
健康检查 | 否 | 返回有关 Edge Microgateway 进程的信息 - 内存使用情况、CPU 使用情况 等等。要使用该插件,请在 Edge 上调用网址 /healthcheck Microgateway 实例。本插件是一个示例,供您用来 实现您自己的健康检查插件。 |
在哪里可以找到现有插件
与 Edge Microgateway 捆绑的现有插件位于此处,其中 [prefix]
是 npm
前缀目录。请参阅
如果找不到 Edge Microgateway 的安装位置,
[prefix]/lib/node_modules/edgemicro/node_modules/microgateway-plugins
添加和配置插件
请按照以下模式添加和配置插件:
- 停止 Edge Microgateway。
- 打开 Edge Microgateway 配置文件。有关详情,请参阅 更改选项的配置。
- 将该插件添加到配置文件的
plugins:sequence
元素中,如下所示。 插件将按照其在此列表中显示的顺序执行。
edgemicro: home: ../gateway port: 8000 max_connections: -1 max_connections_hard: -1 logging: level: info dir: /var/tmp stats_log_interval: 60 plugins: dir: ../plugins sequence: - oauth - plugin-name
- 配置插件。某些插件具有可选参数,您可以在
配置文件例如,您可以添加以下节来配置高峰控制
插件。请参阅使用高峰控制插件
。
edgemicro: home: ../gateway port: 8000 max_connections: -1 max_connections_hard: -1 logging: level: info dir: /var/tmp stats_log_interval: 60 plugins: dir: ../plugins sequence: - oauth - spikearrest spikearrest: timeUnit: minute allow: 10
- 保存文件。
- 根据您修改的配置文件,重启或重新加载 Edge Microgateway。
插件专属配置
您可以替换配置文件中指定的插件参数,方法是创建一个 此目录中特定于插件的配置:
[prefix]/lib/node_modules/edgemicro/node_modules/microgateway-plugins/config
其中 [prefix]
是 npm
前缀目录。请参阅
如果找不到 Edge Microgateway 的安装位置,
plugins/<plugin_name>/config/default.yaml
。例如,您可以将此
屏蔽设置在 plugins/spikearrest/config/default.yaml
中,并且会覆盖
配置设置。
spikearrest: timeUnit: hour allow: 10000 buffersize: 0
使用高峰控制插件
高峰控制插件可防范流量高峰。它会限制 由 Edge Microgateway 实例进行处理。
添加高峰控制插件
请参阅添加和配置插件。
以下项的配置示例: 高峰逮捕
edgemicro: home: ../gateway port: 8000 max_connections: -1 max_connections_hard: -1 logging: level: info dir: /var/tmp stats_log_interval: 60 plugins: dir: ../plugins sequence: - oauth - spikearrest spikearrest: timeUnit: minute allow: 10 bufferSize: 5
以下对象的配置选项: 高峰逮捕
- timeUnit:高峰控制执行窗口的重置频率。有效值 是秒或分钟。
- allow:timeUnit 期间允许的最大请求数。请参阅 如果同时运行多个 Edge Micro 进程。
- bufferSize:(可选,默认值为 0)如果 bufferSize >0,峰值被捕 会将此数量的请求存储在缓冲区中。下次执行“window”时发生时, 缓存的请求会首先得到处理。另请参阅添加 缓冲区。
高峰逮捕是如何运作的?
将高峰控制视为一种通常用于防范流量高峰的方式,而不是作为一种 将流量限制在一定数量的请求以内。您的 API 和后端可以处理 高峰控制政策可帮助您平稳地调整为 。
运行时高峰停止行为不同于您在实际语言中看到的预期结果 每分钟或每秒的值
例如,假设您指定的速率为每分钟 30 次请求,如下所示:
spikearrest: timeUnit: minute allow: 30
在测试中,您可能认为可以在 1 秒内发送 30 个请求,只要它们来自 我们一会儿见但此政策并非强制执行此设置的方式。仔细想想,有 30 在某些环境中,1 秒内发生的请求可能会被视为一次小峰值。
那么,然后会怎么样呢?为了防止出现类似峰值的行为,高峰控制会使允许的 将设置划分为更小的时间间隔,从而获得流量,具体如下:
每分钟费率
每分钟费率经过平滑处理为请求的允许时间间隔(以秒为单位)。例如,30 每分钟请求数进行平滑处理,如下所示:
60 秒(1 分钟)/30 = 2 秒间隔,或大约每 2 秒允许 1 个请求。答 在 2 秒内执行的第二个请求将会失败此外,一分钟内的第 31 个请求也将失败。
每秒速率
每秒的速率会平滑到以毫秒为单位的允许请求中。例如: 每秒 10 个请求会进行平滑处理,如下所示:
1000 毫秒(1 秒)/10 = 100 毫秒的间隔,或允许大约 1 个请求 每 100 毫秒 1 次。100 毫秒内发出的第二个请求将会失败。此外, 就会失败
超出限制时
如果请求数在指定的时间间隔内超出上限,则激增控制 会返回此错误消息及 HTTP 503 状态:
{"error": "spike arrest policy violated"}
添加缓冲区
您可以选择向政策添加缓冲区。假设您将缓冲区设置为 10。 您会发现,当超过高峰控制时间时,API 不会立即返回错误 上限。而是会缓冲请求(最多为指定数量),缓冲的请求会 系统会尽快处理默认 bufferSize 为 0。
如果您同时运行多个 Edge Micro 进程
允许的请求数取决于
。高峰控制会计算每个工作器进程允许的请求数。默认情况下
Edge Micro 进程的数量等于 Edge Micro 所在机器上的 CPU 数量
已安装。不过,您可以在启动 Edge Micro 时配置工作器进程的数量
使用 start
命令中的 --processes
选项。例如,如果您
希望在指定时间段内达到 100 个请求时触发高峰控制,并且如果您启动了 Edge
Microgateway 中使用 --processes 4
选项,然后在allow: 25
高峰控制配置。总的来说,经验法则是设置 allow
配置
参数设置为“所需的高峰控制次数 / 进程数”。
使用配额插件
配额指定允许应用向 API 提交的请求消息的数量 获得的流量当应用达到其配额限制时 API 调用会被拒绝。另请参阅 高峰控制和配额?
添加配额插件
请参阅添加和配置插件。
Apigee 中的产品配置 边缘
您可以在配置 API 产品的 Apigee Edge 界面中配置配额。须知事项 哪个产品包含您要通过配额进行限制的可感知微网关的代理。这个 产品必须添加到开发者应用中。当您进行使用 密钥,则配额将应用于这些 API 调用。
- 登录您的 Apigee Edge 组织账号。
- 在 Edge 界面中,打开与要连接到的可感知微网关的代理相关联的产品
您希望应用该配额
- 在界面中,从“发布”菜单中选择产品。
- 打开包含要应用配额的 API 的产品。
- 点击修改。
- 在“配额”字段中,指定配额间隔。例如,每
一分钟。或每 2 小时 5 万个请求。
- 点击保存。
- 确保产品已添加到开发者应用中。您需要使用此应用的密钥才能 以及经过身份验证的 API 调用。
配额配置示例
edgemicro: home: ../gateway port: 8000 max_connections: -1 max_connections_hard: -1 logging: level: info dir: /var/tmp stats_log_interval: 60 plugins: dir: ../plugins sequence: - oauth - quota
配额的配置选项
如需配置配额插件,请将 quotas
元素添加到您的配置文件中,
如以下示例中所示:
edgemicro: home: ../gateway port: 8000 max_connections: -1 max_connections_hard: -1 logging: level: info dir: /var/tmp stats_log_interval: 60 plugins: dir: ../plugins sequence: - oauth - quota quotas: bufferSize: hour: 20000 minute: 500 month: 1 default: 10000 useDebugMpId: true failOpen: true ...
选项 | 说明 |
---|---|
buffersize |
(Integer) 为指定时间间隔设置的缓冲区大小。允许的时间
单位包括:hour 、minute 、day 、
week 、month 和 default 。 |
failOpen |
启用此功能时,如果发生配额处理错误
或者“需遵循配额”对 Edge 的请求无法更新远程配额计数器,配额
将仅根据本地计数进行处理,直到下一次成功的远程配额
同步。在这两种情况下,系统都会在quota-failed-open
请求对象。
启用“应急开启”配额功能,请设置以下配置: edgemicro: ... quotas: failOpen: true |
useDebugMpId |
将此标志设置为 true 以启用 MP 的日志记录
(消息处理器)ID
。
如需使用此功能,您必须设置以下配置: edgemicro: ... quotas: useDebugMpId: true ...
设置 { "allowed": 20, "used": 3, "exceeded": 0, "available": 17, "expiryTime": 1570748640000, "timestamp": 1570748580323, "debugMpId": "6a12dd72-5c8a-4d39-b51d-2c64f953de6a" } |
useRedis |
如果设置为 true ,该插件会将 Redis 用于配额后备存储空间。
如需了解详情,请参阅使用 Redis 后备存储空间获取配额。 |
使用 Redis 后备存储空间获取配额
要为配额使用 Redis 后备存储空间,请使用 同步功能。以下是将 Redis 用于 配额存储:
edgemicro: redisHost: localhost redisPort: 6379 redisDb: 2 redisPassword: codemaster quotas: useRedis: true
edgemicro.redis*
参数,请参阅使用同步器。
测试配额插件
当超出配额时,系统会向客户端返回 HTTP 403 状态,以及 以下消息:
{"error": "exceeded quota"}
其区别是什么 高峰控制和配额之间呢?
为手头的工作选择合适的工具至关重要。配额政策配置 课程期间允许客户端应用向 API 提交的请求消息的数量 例如一小时、一天、一周或一个月配额政策通过 来维护一个记录传入请求的分布式计数器。
使用配额政策强制执行与开发者和合作伙伴的业务合同或服务等级协议 (SLA), 比运营流量管理更复杂例如,配额可用于限制 一项免费服务,同时允许付费客户完全访问。
使用高峰控制可防止 API 流量突然激增。通常,峰值逮捕是 来阻止潜在的 DDoS 攻击或其他恶意攻击。