跳转到: 导航, 搜索

ApiFlow

API 流提案

举例来说,我将详细描述用户向 /servers 模块发送的 POST 请求。 历史上,这是一个非常密集且受到大量监控的操作,因此施加了严格的速率限制。

Api.png

HTTP API 身份验证中间件

  • 已经存在
  • nova.api.openstack.auth:AuthMiddleware
  • 无需提议更改。

HTTP API 速率限制中间件

  • 已经存在
  • nova.api.openstack.ratelimiting:RateLimitingMiddleware
  • 建议的变更
    • 这个中间件是为了防止 HTTP API 服务器过载而存在的。 因此,似乎不应该根据计算 API 的负载/能力进行速率限制。 我建议该层仅处理以下限制
      • 每个用户的请求数量
      • 每个项目的请求数量
  • 需要更改为在数据库中存储统计信息,以便进行多节点部署。

计算 API 身份验证

  • 已经存在...某种程度上...
  • RequestContext 会被传入并在某些情况下使用
  • 建议的变更
    • 不存在未经验证的请求。
    • 上下文应该在每个计算 API 调用中完全填充并验证。
    • 身份验证失败时应引发标准异常。

计算 API 配额检查

  • 已经存在。
  • 在许多调用中,例如 create(),会检查配额。
  • 无需提议更改。

计算 API 速率限制

  • 不存在
  • 需要存储数据库中的信息,以便进行多节点部署。
  • 处理
    • 每个用户的 create() 调用数量
    • 每个用户的 delete() 调用数量
    • 每个项目的 create() 调用数量
    • 每个项目的 delete() 调用数量
    • 等等...