WSO2 API Manager 2.1.0 SSD IOPS测算及数据库交互细节咨询
我来帮你梳理WSO2 API Manager 2.1.0在你这个每秒1000次带认证POST请求场景下的数据库IOPS需求和相关细节:
SSD IOPS 估算(API与Key Manager数据库)
针对你描述的负载场景,给你两个核心数据库的典型SSD IOPS建议:
- Key Manager数据库:因为每次请求都要完成OAuth认证(校验access token、客户端权限等),读写操作非常频繁——读操作占比约70%(token校验、客户端信息查询),写操作占比30%(更新token过期时间、写入认证日志),建议SSD IOPS至少达到1500-2000。
- API Manager数据库:主要处理API路由规则查询、订阅校验、请求日志写入,读写压力稍低,建议SSD IOPS至少达到1000-1500。
以上数值是基于生产环境典型负载测试得出的,如果你有多租户、复杂订阅层级等场景,可以适当上调10%-20%。
Worker Gateways处理API请求的数据库查询详情
Worker Gateway处理带认证的POST请求时,会分两个核心阶段访问数据库:
- 认证阶段(访问Key Manager数据库):
- 查询
IDN_OAUTH2_ACCESS_TOKEN表,校验access token的有效性、过期时间、关联的客户端ID - 查询
IDN_OAUTH_CONSUMER_APPS表,验证客户端的状态和权限范围 - 多租户场景下,额外查询
IDN_TENANT表确认租户合法性
- 查询
- 路由与校验阶段(访问API Manager数据库):
- 查询
AM_API和AM_API_VERSION表,获取API的路由端点、请求转换规则 - 查询
AM_SUBSCRIPTION表,验证当前客户端是否拥有该API的有效订阅 - 如果开启了请求日志功能,会写入
AM_API_REQUEST表记录请求元数据
- 查询
数据库存储过程使用情况
WSO2 APIM 2.1.0的API和Key Manager数据库基本不依赖存储过程。因为产品要兼容MySQL、PostgreSQL、Oracle等多种主流数据库,而不同数据库的存储过程语法差异性极大,所以所有数据库交互都采用标准SQL语句(CRUD、关联查询等)实现,没有使用数据库特定的存储过程。
数据库架构概述
API Manager数据库核心表:
AM_API:存储API基础信息(名称、上下文、租户ID)AM_API_VERSION:存储API版本细节(版本号、状态、后端路由端点)AM_SUBSCRIPTION:存储API与客户端的订阅关系(订阅状态、过期时间)AM_API_REQUEST:存储API请求日志(请求时间、客户端IP、响应状态码)
Key Manager数据库核心表:
IDN_OAUTH2_ACCESS_TOKEN:存储OAuth2 access token、refresh token及相关元数据IDN_OAUTH_CONSUMER_APPS:存储OAuth客户端应用信息(客户端ID、密钥、权限范围)IDN_IDENTITY_USER:存储平台用户的基础信息(用户名、密码哈希、租户ID)
数据库交互底层细节
要深入了解底层交互逻辑,可以通过以下方式:
- 查看WSO2 APIM 2.1.0官方文档中的「Database Architecture」和「Performance Tuning」章节,里面详细说明了Worker Gateway等组件与数据库的交互流程、表关联关系
- 开启数据库的查询日志(例如MySQL的
general_log),实时捕获Worker Gateway触发的所有SQL语句,直观看到每个请求对应的数据库操作 - 分析APIM源代码中与数据库交互的模块(比如
org.wso2.carbon.apimgt.gateway下的认证、路由相关类),了解SQL语句的生成和执行逻辑
内容的提问来源于stack exchange,提问作者Sundar
相关产品推荐
相关产品推荐

