api - 如何在生产中为基于微服务的应用程序部署多个版本的应用程序

标签 api amazon-web-services amazon-elastic-beanstalk microservices production-environment


是否可以同时在生产中部署多个版本的服务。根据我的假设,这应该是基于微服务/api 的项目或移动项目的常见模式。我想知道你是怎么做到的,以及行业中针对此类问题的常见模式是什么。如果您的回答围绕 AWS 环境或 Kubernetes 环境进行,那将很有帮助。
提前致谢。

最佳答案

Is it possible to have multiple versions of service(s) deployed in production at the same time

是的,这是可能的。我们的想法是同时将所有使用过的微服务保留在生产环境中(v1、v2 ...),并关闭不再使用的版本。为此,您应该以某种方式知道某个版本何时不再使用。

AFAIK,你必须选择:

  1. 对于每个新版本,您都会创建一个连接到相同(现已升级)微服务的新端点(如/v2/someApiCall),并逐渐指示客户端使用新端点;当不再使用旧端点时,您将其删除;这是首选方式。

  2. 对于每个新版本,您都会创建一个与旧微服务共享相同持久性的新微服务;您应该避免使用此解决方案; Netflix 在极少数情况下使用此策略,因为更换老消费者的成本太高。

您可以在 Building microservices by Sam Newman 的第 62 页阅读更多内容.

关于api - 如何在生产中为基于微服务的应用程序部署多个版本的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44124914/

相关文章:

json - 无法提取响应主体以设置环境变量

ios - 如何在没有反斜杠的情况下转义整个字符串?

python - 来自 Amazon.com(和 Amazon.in)的程序化结账

amazon-web-services - 如何通过 AWS SDK 创建 AWS Athena 分区

laravel - AWS Elasticbeanstalk 使用 .platform 覆盖 Nginx 配置不起作用

java - 从 api 调用接收 null

python - 无法使用 KeyboardButton 获取用户的电话号码

amazon-web-services - ecs.amazonaws.com 和 ecs-tasks.amazonaws.com 有什么区别?

amazon-elastic-beanstalk - EB CLI 参数化 CI 部署的部署工件名称

python - 模块未找到错误 : No module named 'application' [Deploying Django to AWS]