我正在打开这个主题,寻找解决/帮助以下问题的建议:
- 我目前正在与其他人合作开发一个使用云计算的微服务架构项目。
- 有 6 种不同的微服务,并且有一些微服务不兼容,因此无法在同一台机器上实例化。
- 每个微服务都有一个版本号。
- 为了启动任何微服务的一个或多个新实例,我们必须通过静态配置定义哪些微服务将在这台新机器上运行。
- 这种静态配置,我们称之为“部署”,包含正在部署的微服务,以及每个微服务的版本。(例如:(XY,[(X,v1),(Y,v2)]) - X 和 Y 是微服务,XY 部署实例化 X 的版本 1 和 Y 的版本 2)
- 这些“部署”也有自己的版本号。在部署中更改微服务的版本号需要更改包含该微服务的任何“部署”的版本。(例如:(XY,v1,[(X,v1),(Y,v2)]) 和 (XY,v2,[(X,v1),(Y,v3)]))
问题是:什么是正确的,或者至少是一个好的术语来指代这个我之前称之为“部署”的实体?
许多开发人员围绕我们的架构编写程序并为此类实体使用不同的名称,这导致我们团队内部的语法和语义不兼容。
在这些不同的名称中,都有优点和缺点:
- deploy:很有意义,因为您正在部署列表中的所有微服务。但是,术语部署已经指定了我们流程的另一部分,并且可能会过度使用同一术语。(部署 XY deploy 将在一台机器上部署微服务 X 和 Y)
- 集群:一组东西的好名字,但是你可以从一个配置中部署多台机器,集群这个术语已经适用于这组机器。
- 服务:服务将是一组微服务。有道理,但许多代码将微服务称为“服务”,这可能会导致混淆。(def get_version(service) - 他说的是服务还是微服务?)
你们中的任何人都可以就这个问题给我们任何意见或启示吗?谢谢!