消费者组
本文档将介绍 APISIX 中消费者组的基本概念及其常见用例。你将了解一些相关概念,包括如何将消费者组信息传递给上游以及消费者组访问限制。
在文档末尾探索其他资源,以获取有关相关主题的更多信息。
概述
在 APISIX 中,消费者组(Consumer Group)对应于一组共享相同插件配置(例如访问控制和限流限速策略)的消费者。可以通过在配置中引用消费者组 ID 将消费者添加到消费者组中。这使得 API 管理更加容易,并有助于减少消费者配置中的冗余。
消费者组的一些示例用例包括:
- 使用不同的定价模型实现 API 货币化
- 为不同角色(例如管理员、开发者和访客)实现基于角色的访问控制 (RBAC)
- 基于其他共享功能对消费者进行分组
下图通过一个 API 货币化示例说明了消费者组的概念,该示例包含三个消费者:John、Jane 和 Bot。John 和 Jane 是基本计划中的人类消费者,共享较低的 API 配额;而 Bot 在高级计划中,拥有较高的 API 配额:
通过使用消费者组,你无需在每个消费者上重复配置 limit-count。
将消费者组信息传递给上游
类似于将消费者信息传递给上游,你可以在消费者组上使用 proxy-rewrite 插件将所需信息包含在标头中:
{
"plugins":{
...,
"proxy-rewrite":{
"headers":{
"set":{
"X-Consumer-Group-ID":"$consumer_group_id"
}
}
}
}
}
消费者组访问限制
你可以通过在 consumer-restriction 插件中施加基于消费者组 ID、HTTP 方法或其他参数的限制来控制对 API 的请求访问。
例如,如果你想严格限制名为 cg-data-uploading 的消费者组的 HTTP 方法必须使用 PUT,你可以更新插件配置如下:
{
"plugins":{
...,
"consumer-restriction":{
"type":"consumer_group_id",
"allowed_by_methods":[
{
"user":"cg-data-uploading",
"methods":["PUT"]
}
]
}
}
}
consumer-restriction 插件还可以与 消费者、路由、服务 和 消费者组 一起使用。