SuperAPI AI 工具集

evolving-apis-and-schemas

编程与开发

查看项目

更新于 10-16 03:13

技能介绍

用途:在修改其他系统或已存数据所依赖的结构时(如编辑 .proto、写数据库迁移、增删列)提供安全演进方法。核心原则是旧读者与新读者在发布全程都必须正确,否则应拆成更多步骤。

主要能力:先识别消费者(同二进制、自有服务、不可控客户端、持久化数据、队列/事件日志、副本),据此判断是否必须 expand/contract;再将变更分类为安全、expand/contract、破坏性(需版本化)。expand/contract 分三次部署:EXPAND 加新结构并双写;MIGRATE 回填数据并切换读者;CONTRACT 停写旧结构并删除,此为不可逆点。阶段间需用查询而非时间确认无人读写旧结构。

具体做法:Protobuf 中字段号是线上身份,删除字段须同时 reserved 编号与名称,禁止复用已删编号,重命名破坏 JSON 与生成客户端;SQL 关注锁时长,如 SET lock_timeout、CREATE INDEX CONCURRENTLY、NOT VALID 后 VALIDATE CONSTRAINT,SQLite 仅支持有限 ALTER,其余需重建;HTTP/JSON 中新增必填请求字段会破坏调用方,应改为可选带默认值,勿复用名称,按资源而非整体 API 版本化。

验证与限制:可用 buf breaking、migrate up/down 往返、EXPLAIN ANALYZE 等;须在生产数据副本上计时测试,双读比对,并确认旧二进制对新模式仍通过测试。回滚方面,加性迁移写 down,破坏性迁移无 down 须明确说明恢复方式。资料未提供具体收费、平台或效果信息。