Architecture 产品版本控制微服务
我研究了基于docker的微服务体系结构,我有3个微服务,它们共同创建了一个产品,例如“CRM系统” 现在我希望我的客户能够随时升级他的产品。 我有3个不同版本的微服务,客户端应该看到哪一个? 我想产品版本应该独立于微服务,因为复制一个微服务版本会比没有版本更麻烦 那么,有什么模式、想法来处理这种情况呢Architecture 产品版本控制微服务,architecture,docker,domain-driven-design,soa,microservices,Architecture,Docker,Domain Driven Design,Soa,Microservices,我研究了基于docker的微服务体系结构,我有3个微服务,它们共同创建了一个产品,例如“CRM系统” 现在我希望我的客户能够随时升级他的产品。 我有3个不同版本的微服务,客户端应该看到哪一个? 我想产品版本应该独立于微服务,因为复制一个微服务版本会比没有版本更麻烦 那么,有什么模式、想法来处理这种情况呢 我想到的唯一一件事是拥有另一个存储库,每当一个微服务生成生产就绪的包时,该存储库就会进行版本控制。然而,我现在有了一个版本,我的产品所有者(PO)都不知道这个版本。文献使用了一个5维模型: 版
我想到的唯一一件事是拥有另一个存储库,每当一个微服务生成生产就绪的包时,该存储库就会进行版本控制。然而,我现在有了一个版本,我的产品所有者(PO)都不知道这个版本。文献使用了一个5维模型:
- 版本(想要更改)
- 状态(生命周期:创建、测试、部署、退役)
- 视图(源、部署、文档)
- 层次结构(产品、微服务)
- 变体(基本相似,描述差异,产品系列)
apt
、npm
、bower
等实现相同。很难说您的解决方案需要多复杂,但我建议您至少支持“最低要求版本”的概念。如果docker有一个内置机制,试着使用它(我对docker不太了解,所以我说不出来)
这样,您就可以指定4.8.12
版本的产品需要1.12.0
版本的服务A和3.0.4
版本的服务B
然后,更新机制应遵循遵循SemVer的策略。这意味着安装特定产品版本会自动安装具有相同主版本的最新服务。在上面的示例中,这可以例如安装服务A的
1.12.2
,以及服务B的3.3.0
。提供一种机制来保持满足依赖性要求的已安装服务可能是一个好主意,这样用户就不会对更新机制感到恼火。你所说的随时升级产品是什么意思?您指的是桌面应用程序或移动应用程序之类的应用程序,其中您不要求它们进行更新,这会在添加附加功能或改进API消息架构方面造成问题?是的,我指的是桌面应用程序,它具有升级系统模块的功能。它允许管理员(客户端)通过单击一个按钮升级他的系统。应用程序停止一段时间,后台任务完成它的工作,以满足请求。我认为OP的问题遗漏了一点。他在问“如果我有3个微服务,每个都有自己的版本,比如v1.0.0 v1.2.1 v1.3.0,那么当我从v1.0.0->v1.1.0开始时,我如何描述产品版本?是否应该为拥有这3个微服务的整个产品提供一个独立的版本?是否也应该使用SemVer?”