登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
导读
排行榜
资讯
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
写博客
小组
VIP申请
VIP网盘
网盘
联系我们
发帖说明
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
业界
›
读发布!设计与部署稳定的分布式系统(第2版)笔记31_版 ...
读发布!设计与部署稳定的分布式系统(第2版)笔记31_版本问题
[ 复制链接 ]
能杜孱
2025-6-8 23:19:06
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
1. 在软件与外部环境之间的许多交汇点上,版本控制基本上处于混乱状态
1.1. 不应该为了更新自身系统的API,而让服务消费者被迫与你同时发布新版本
1.2. 多数服务新版本的发布应该具有兼容性
2. 分层的“约定”栈
2.1. 连接握手和持续时间
2.2. 请求组帧
2.3. 内容编码
2.4. 消息语法
2.5. 消息语义
2.6. 鉴权和身份验证
3. 对请求要协变
3.1. covariant request
4. 对响应要逆变
4.1. contravariant response
5. 即
5.1. 可以比以往提出的要求更少
5.2. 可以比以往接受的可选信息更多
5.3. 可以比以往返回的响应更多
5.4. 可以类比必填参数和可选参数
6. 安全的变更
6.1. 在参数上强制执行以前所需约束的子集
6.2. 返回以前可返回值的超集
6.3. 接受以前可以接受的参数的超集
6.4. 要求必须填写以前必填参数的一个子集
7. 生成式测试技术
8. 破坏API的变更
8.1. 减少API破坏性变更影响的第一个先决条件是在请求和回复消息格式中添加一个版本号字段
8.2. 为URL添加版本辨别字段,可以用前缀形式或查询参数来实现
8.2.1. 同一实体的不同表示看起来像是不同的资源,而这在REST世界中是禁忌
8.3. 使用PUT和POST上的Content-Type标头指示正在发送的版本
8.3.1. 可以为版本定义一个媒体类型application/vnd.lendzit.loan-request.v1和一个新的媒体类型application/vnd.lendzit.loan-request.v2
8.3.2. 优点
8.3.2.1. 在数据库中存储的所有URL都可以继续工作,客户端无须更改路由就可升级
8.3.3. 缺点
8.3.3.1. 单单凭借URL已经不够区分版本了,像application/json和text/xml这样的通用媒体类型根本提供不了任何帮助
8.3.3.2. 客户端必须事先知道存在这种特殊的媒体类型,以及所有允许的媒体类型
8.3.3.3. 一些框架虽然支持基于媒体类型的路由,但配置起来会有难度
8.4. 仅针对PUT和POST,在请求正文中添加一个字段来指示预期版本
8.4.1. 优点是不需要路由,易于实施
8.4.2. 缺点是无法涵盖所需要的所有场景
8.5. 使用特定于应用程序的自定义标头指示所需的版本
8.5.1. 可以定义一个类似api-version的标头
8.5.2. 优点是具有完全的灵活性,并且与媒体类型和URL正交
8.5.3. 缺点
8.5.3.1. 要为特定框架编写路由处理器
8.5.3.2. 这个标头是另一个必须与服务消费者分享的秘密
8.6. 服务提供方都必须在一段时间内同时支持旧版本和新版本
8.7. 如果要在一些URL中添加版本信息,那么务必同时在所有路由中都添加这个版本
8.7.1. 即使这次变更只涉及一个路由,也不要强制用户记住哪些版本号对应哪些API
8.8. 只要不影响未来进行的变更,尽可能地减少代码重复
9. 处理其他系统的版本问题
9.1. 软件应该保持杞人忧天的状态
9.2. 虽然请求规范中添加了一些新字段,但并不意味着所有人都会遵守新规范
9.3. 请求端与响应端检查自己是否符合规范
9.4. 将测试分为不同的部分,有助于隔离通信中的故障,并能使代码更加稳健
9.4.1. 我们不会再对另一方的行为做出不合理的假设
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
发布
设计
部署
定的
分布式
相关帖子
Karmada v1.16 版本发布!支持多模板工作负载调度
Java 25 (LTS) 重磅发布:AI、性能、安全全面革新,新手入门门槛再创新低!
Java 25 (LTS) 重磅发布:AI、性能、安全全面革新,新手入门门槛再创新低!
ROS2概念之分布式通信
2026年主流原型设计工具:Axure、墨刀功能差异解析对比
RabbitMQ发布订阅模式同一消费者多个实例如何防止重复消费?
IntelliJ IDEA 免费版正式发布,太香了!
数据库表设计
DDD领域驱动设计
当遇见 CatchAdmin V5-模块化设计重新定义 Laravel 后台开发
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
业界
Karmada v1.16 版本发布!支持多模板工作负载调度
0
590
士沌
2025-12-16
安全
Java 25 (LTS) 重磅发布:AI、性能、安全全面革新,新手入门门槛再创新低!
2
262
褐洌
2025-12-16
安全
Java 25 (LTS) 重磅发布:AI、性能、安全全面革新,新手入门门槛再创新低!
2
320
肿圬后
2025-12-16
业界
ROS2概念之分布式通信
0
885
扈怀易
2025-12-17
安全
2026年主流原型设计工具:Axure、墨刀功能差异解析对比
0
306
劳怡月
2025-12-17
业界
RabbitMQ发布订阅模式同一消费者多个实例如何防止重复消费?
1
758
滕佩杉
2025-12-18
安全
IntelliJ IDEA 免费版正式发布,太香了!
1
638
雌鲳签
2025-12-18
业界
数据库表设计
1
292
崔竹
2025-12-18
安全
DDD领域驱动设计
0
335
吁寂
2025-12-19
业界
当遇见 CatchAdmin V5-模块化设计重新定义 Laravel 后台开发
0
694
于映雪
2025-12-21
回复
(2)
公西颖初
2025-10-11 10:55:08
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
新版吗?好像是停更了吧。
姥恫
2025-11-1 02:08:25
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
这个有用。
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
签约作者
程序园优秀签约作者
发帖
能杜孱
2025-11-1 02:08:25
关注
0
粉丝关注
26
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
3934307807
991124
anyue1937
9994892
kk14977
6845358
4
xiangqian
638210
5
韶又彤
9997
6
宋子
9981
7
闰咄阅
9993
8
刎唇
9993
9
俞瑛瑶
9998
10
蓬森莉
9949
查看更多
今日好文热榜
957
企业级多智能体系统(MAS)架构深度研究:C
191
北京守嘉陪诊登顶2025年度陪诊行业排行 专
234
流量暴跌 96%:AI 聊天机器人正在构建危险
172
AI生成论文查重能过么?8款AI写论文软件测
508
懒人长期理财的投资系统
507
第40次CCFCSP认证邮寄
867
第40次CCFCSP认证邮寄
853
第40次CCFCSP认证邮寄
439
用 .NET MAUI 10 + VS Copilot 从 0 开发一
869
【节点】[GammaToLinearSpaceExact节点]原
378
[20251218]测试sql语句子光标的执行性能(21
496
HECTF2025
16
《C语言程序设计》琐碎知识点总结笔记
378
NGD-SLAM(三)
46
AI 领域职业发展分享总结(吴恩达新课内容
103
【面试题】数据库事务隔离与传播属性是什么
191
2025年儿童羽绒服十大名牌排名:宝妈选购指
314
2025年儿童羽绒服十大名牌排名:宝妈选购指
761
Flink源码阅读:如何生成ExecutionGraph
421
Github项目CI&CD部署