当前位置: 首页 > news >正文

AIP-214 资源过期

编号214
原文链接AIP-214: Resource expiration
状态批准
创建日期2018-06-19
更新日期2018-06-19

客户经常希望设置某个资源或资源属性不再可用或生效的时间(例如轮转安全密钥)。目前,我们建议客户设定一个具体的“过期时间”,保存在 google.protobuf.Timestamp expire_time 域。然而,如果客户希望设定相对时间偏移量,而非具体的过期时间时,这会增加额外负担。

此外,现实中存在“生存时间”(通常缩写为TTL)概念,在使用自动生成的客户端库时,这个域的典型格式(以秒为单位的整数)可能导致较差的用户体验。

指南

  1. 希望表达过期时间的API 必须 使用名为 expire_time 的google.protobuf.Timestamp域。
  2. 希望支持相对过期时间的API 必须 定义名为 expiration (或 {something}_expiration )的 oneof 域,包含 expire_time 域和一个单独的google.protobuf.Duration域,名为 ttl ,并标记为只输入。
  3. API 必须 始终在 expire_time 域中返回过期时间,并在查询资源时将返回的 ttl 域清空。
  4. 依赖特定“生存时间”语义的API(例如DNS必须将TTL表示为整数)*可以* 使用 int64 ttl 域(此时 应当 提供先例说明)。

示例

message ExpiringResource {
  // google.api.resource 和其他注解和域

  oneof expiration {
    // 资源过期时间的 UTC 时间戳。
    // 输出时始终提供此域,无论输入发送了什么。
    google.protobuf.Timestamp expire_time = 2;

    // 仅输入。资源 TTL。
    google.protobuf.Duration ttl = 3 [(google.api.field_behavior) = INPUT_ONLY];
  }
}

理由

可能的备选方案

使用新的标准域 ttl

我们考虑过使用名为 ttl 的标准域,作为定义过期时间的替代方法。但这样做将要求 API 服务不断更新域,就像倒计时一样。这可能会在“读取-修改-写入”周期中引发问题,因为资源处理可能持续一段时间,并因此实际延长了资源的生命周期。

始终使用 expire_time

这是目前的状态,只有少数例外。此时我们可能会将计算 now + ttl = expire_time 放到客户端库。然而在命令行和使用 REST/JSON 时,这会带来一些令人沮丧的体验。保持现状通常是默认选项,但似乎许多客户希望能够定义相对过期时间,因为更简单,还能避免时区问题、错误的时钟时间以及其他一些愚蠢的错误。

相关文章:

  • Green Coding规范:从循环语句到数据库查询的节能写法
  • 如何在idea中新建一个项目
  • strings.Cut 使用详解
  • 【Csharp】Winform客户端与服务器,局域网加密字符串与文件通信
  • 使用SymPy求解矩阵微分方程
  • DeepSeek本地部署(Ollama)
  • 【代码随想录 字符串3.替换数字】
  • C++中为什么要使用nullptr而不是null
  • 数字电子技术基础(三十九)——显示译码器
  • 基于CAPL语法实现对程控电源的控制(通用DLL版,支持TCP协议,RS232协议,SCPI指令)
  • 对解释器模式的理解
  • 互联网三高架构设计
  • JAVA对象创建过程和类加载过程
  • 整车CAN网络和CANoe
  • 如何使用Python自动化测试工具Selenium进行网页自动化?
  • Java类加载机制深度解析
  • 蓝桥杯基础算法-字符串与集合
  • 瑞萨RA4M2使用心得-KEIL5的第一次编译
  • pipwire cpu 100%使用率的问题
  • 大模型学习五:‌DeepSeek Janus-Pro-7B 多模态半精度本地部署指南:环境是腾讯cloudstudio高性能GPU 16G免费算力
  • 住房城乡建设部网站首页/西安网站定制开发
  • 做网站温州/排名优化seo
  • 微应用和微网站的区别/希爱力双效片副作用
  • wordpress百万数据/seo推广论坛
  • 网站制作有哪些种类/整合营销传播的方法包括
  • 老铁推荐个2021网站好吗/兰州seo快速优化报价