Chaintable 平台提供了全托管的 OpenAPI 功能,支持将用户编写的计算函数(Functions)直接发布为标准的 HTTP 服务,方便下游业务系统直接调用。
网关与执行架构
OpenAPI 的调用架构在逻辑上分为两层:- 产品业务端 OpenAPI 网关:负责统一接收用户的请求,执行鉴权、限流计费以及日志记录。
- SyncInvoker(独立部署):网关验证通过后,将请求转发给独立部署的 SyncInvoker 集群,实际执行特定的 Function 并返回数据结果。独立部署的设计能够有效避免平台内部其他业务对 API 调用产生干扰。
接口调用规范
请求示例
用户通过标准的POST 请求调用特定 endpoint,Header 需要承载平台信息(如 AccessKey):
- Endpoint 路由:不同 function 在逻辑上对应不同的 endpoint,便于统计和归因。
- 参数数组化:function 的参数本质上是数组(Array)形式,这是平台的特性。目前参数定义是软限制,内部不需要再做额外的字典映射。
成功返回 (HTTP 200)
接口保持函数原生的返回形态,不对数据做二次壳协议包裹:错误返回 (HTTP 5xx / 4xx)
当调用失败时,使用标准的 HTTP 状态码标识失败,并在 JSON 响应体中提供具体的平台错误原因:用量计费与额度限制
1. 计费单位 (Compute Units)
- 计算公式:单次函数执行按实际执行时间计算用量,
1 unit = 1 ms。 - 计费保护:单次请求最低消耗
100 units。 - 责任划分:系统错误不消耗 unit。除非明确是“用户错误”,否则其余情况都属于系统错误,不予计费。
2. 扣减机制
平台使用 Redis 作为计费的唯一事实源。每个账号在 Redis 中维护两个实时计数器:monthly(月度额度):月度 unit 随用户套餐账单周期重置,不同套餐的月度额度和额外购买的 addon 额度不能混合。addon(加油包额度):额外购买 addon 时增加。
monthly 计数器,扣减完毕后再消耗 addon 计数器。所有的 unit 读取和变更都直接以 Redis 的操作结果为准。此外,该数据会同步备份到持久化的权益表(account_openapi_quota)中。
3. 日志审计
所有访问都会产生日志(包含访问基本信息与 unit 消耗信息),并写入 Elasticsearch (ES),用以支撑后续的统计和审查需求。4. 限制阈值
- 单次请求维度:超时时间硬性限制为 5 秒。
- 账号维度:实施严格的账号级 RPS(每秒请求数)限制 以及 Units 总量限制。
全球套餐标准
| 套餐算力等级 | 包含月度算力额度 (Compute Units) | 额外购买单价 (每 1M Units) | 每秒请求限制 (Requests per second) |
|---|---|---|---|
| $0 | 1M units | - | 5 RPS |
| $960 | 200M units | $8 | 100 RPS |
| $2,880 | 600M units | $6.5 | 400 RPS |
| $9,600 | 2B units | $5 | 1,600 RPS |