服务版本与服务发布
1、服务概述
服务和人一样,需要不断成长,而导致服务成长的因素很多,比如业务的发展、功能变更、线上Bug等。人在不同的阶段会有不同的年龄,而服务在不同的阶段会有不同的版本。服务的多版本管理是分布式服务框架的重要特性。服务提供者和服务消费者都属于服务多版本管理的范围。服务提供者发布服务时,需要支持指定服务的版本号。服务消费者消费服务时,需要支持指定引用服务的版本号。
2、服务版本
2.1 服务版本概述
服务版本号一般由“主版本(Major)+副版本(Minor)+微版本(Micro)”构成,比如正式版:1.0.1、1.2.6等。服务的版本号必须是有序的,在服务名相同的情况下,两个相同服务名的不同服务版本的版本号可以比较大小。当两个服务的服务名、版本号全部相同时,两个服务才是同一个服务,否则以第一个出现差异的版本号的大小决定服务版本的大小。
1)主版本:
全盘重构时增加。
重大功能或方向改变时增加。
大范围不兼容之前的接口时增加,例如1.1.1 → 2.1.1。
2)副版本:增加新的业务功能时增加版本号,比如1.1.1 → 1.2.1。
3)微版本:
增加新的接口时增加。
在接口不变的情况下,增加接口的非必填属性时增加。
增强和扩展接口功能时增加。
修复接口的Bug时增加,例如1.1.1 → 1.1.2。
2.2 Snapshot和Release
在开发过程中,服务有Release正式版和Snapshot快照版。
Snapshot版本:代表不稳定、尚处于开发中的版本,即快照版本。
Release版本:代表功能趋于稳定、当前更新停止、可以用于发布的正式版本。
这两个概念用于描述JAR包,JAR包提供给其他服务作为依赖。服务版本升级路线如图12-1所示。
这里需要特别注意几点:
(1)Release版本一经发布,不得修改其内容,任何修改必须在新版本发布。
(2)不要轻易修改API,尤其是对API进行不兼容的升级或弃用。如果需要弃用API,就要提前在一个或几个版本中加入弃用标示或注解,在文档中建议用户更换为其他可替换的API,然后在下个版本号升级时再真正丢掉弃用的API。
(3)在接口还没有确定下来的时候,应该先使用Snapshot版本。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理