当前位置: 首页 > 面试题库 >

产品版本控制微服务

田成化
2023-03-14
问题内容

我进入了基于docker的微服务架构,我有3个微服务,它们共同创建了一个产品,例如“ CRM系统”。

现在,我希望我的客户能够随时升级他的产品。我的微服务有3个不同版本,客户应该看哪个?我猜产品版本应该独立于微服务,因为复制一个微服务版本会使我陷入麻烦,而不是根本没有版本。

那么,有什么模式,想法可以应对这种情况吗?

我唯一想到的就是拥有另一个存储库,只要其中一个微服务产生生产就绪的软件包,该存储库就会被版本化。但是,我现在有一个版本,我的产品所有者(PO)都不知道。


问题答案:

微服务版本控制

首先,确保微服务严格遵循语义版本控制(SemVer)。不这样做会迟早导致不兼容问题。

仅捕获该版本中的API更改,请勿将其与微服务内部版本控制(例如,具有数据库的服务的数据库架构版本控制)混合使用。

产品版本控制

按照您的建议介绍该产品的版本。遵循SemVer在这里也很有意义,但是可能需要放宽以满足市场需求(例如,即使SemVer仅需要较小的版本增量,也可以进行主要版本的增量)。在极端情况下,请使用专用的“技术版本”和“营销版本”。然而,这对于客户来说也更加复杂。

还要注意,由于整个应用程序没有“ API”,因此您需要html" target="_blank">定义SemVer版本对您的应用程序的含义。

依赖管理

现在,特定的产品版本是特定版本的微服务的列表。请注意,这基本上是在同一意义上依赖管理aptnpmbower,等实现。您的解决方案需要多么复杂很难说,但是我建议至少支持“最低要求版本”的概念。如果docker具有内置机制,请尝试使用该机制(我不太了解docker,所以我无法告诉)。

有了这个,你是例如可以指定你的产品的版本为4.8.12需要服务A版本1.12.0和B业务的3.0.4

然后,更新机制应遵循符合SemVer的策略。这意味着安装特定产品版本会自动安装 具有相同主要版本
的最新服务。在上面的示例中,这可以例如1.12.2是服务A和3.3.0服务B的安装。提供一种机制来保持满足依赖要求的已安装服务可能是一个好主意,以使用户不会因更新机制而烦恼。



 类似资料:
  • 我对Kubernetes还很陌生,只是从一个示例项目开始学习。我目前正在运行一个.NET微服务,它需要一个MongoDB作为数据库。微服务被打包到Docker映像中,我创建了一个单独的Helm图表来正确部署我的微服务和所需的MongoDB。 是这样做的吗?还是我错过了什么?所有给我指明正确方向的线索都非常欢迎!

  • 需要修改Spring Boot微服务的现有契约(请求/响应有效负载),这实际上是破坏性的更改(不向后兼容)。而且在一段时间内支持合同的两个版本--直到所有客户都升级到更新的版本--是至关重要的。 为了实现这一点,已经决定使用URL版本控制策略(如/v1/{resource}和/v2/{resource})。 现在,问题是在代码中实现这一点的最佳方式是什么?以下是两个建议的解决方案 > 扩展版本一(

  • 6.1 产品定制 一个 product flavor 定义了可以通过工程构建应用的自定义版本。一个独立的工程可以定义不同的flavor改变生成的应用。 这种被设计的新概念对于版本间差异非常小的时候很有用。如果“这是同一个应用吗?”的答案是肯定的话,那么这种方式的确比使用库工程的方式要好得多。(译者注:以前的方法要生成多个包,可能是从采用多个不同的应用工程+一个库工程的方式,现在这种新的方式比我们以

  • 本章提供了网络 API 的版本控制指南。由于一个 API 服务可能提供多个 API 接口),因此 API 版本控制策略适用于API 接口级别,而不适用于 API 服务)级别。 为了方便起见,术语 API 指的是以下各节中的 API 接口。 网络API应该使用语义化的版本。比如给定版本号 MAJOR.MINOR.PATCH: 当做出不兼容修改的时候,修改 MAJOR 版本号 当以向后兼容的方式添加功

  • 你要为项目做版本控制,学会为项目做版本控制,是开发者的必备技能。用的工具叫 git。 git git 是一种版本控制工具,工具的使用只是一个熟练过程。 https://git-scm.com/ 安装 可以在 git 官网下载适合自己操作系统上用的 git 。也可以使用系统包管理去安装 git,Windows 如果下载了完整版的 cmder ,里面已经包含了 git 。 Windows Window

  • 版本控制 版本管理涉及团队协作,产品质量,和产品上线。使用版本控制工具可使我们自由的做的一些几点: 回退到任意版本 查看历史版本 对比两个版本差异 版本控制系统 版本控制系统(Version Control System)是一种记录若干文件修订记录的系统,它可以帮助开发者查阅或回档至某个历史版本。 手动版本控制 LVCS 本地 CVCS 集中式(例如 SVN) DVCS 分布式(例如 Git) 手