0

实际上,对于我需要的东西,可能存在更好的术语,但我不知道,并且会感谢任何建议和/或适当编辑问题主题的人。

S考虑部署到生产服务器的web api 服务。让我们将其视为真实的工作来源。

然后,例如,我需要更新一些外部依赖项或更改基础设施代码,既不直接影响核心业务逻辑,也不影响服务的公共合约。

因此,我得到S_updated了哪些必须通过暂存阶段,然后才能部署到生产中。由于对代码库所做的更改,我希望此服务可以像以前的版本一样工作,或者由于集成问题而根本不工作。仍然存在以某种方式改变系统行为的风险,但我可以忍受它并期望单元测试成为一个相当好的安全网。实践也证明了这一点。

我真正想要的是能够部署S_updated到生产环境并让一些代理服务将所有或部分(取决于配置)失败的请求分派给前一个S服务。

是否存在一些针对此类功能的通用可配置解决方案?

4

1 回答 1

1

保罗的评论是正确的。您要求Canary 发布流程。

部署后,客户端将有很高的机会到达旧服务,而很小的机会到达新服务。因此,如果调用失败(由于新服务中的错误),客户端可以重复调用,并且很有可能成功到达旧服务。

如何做到这一点取决于您使用的基础设施。

例如,如果您要使用 kubernetes 集群,您可以为服务配置前端负载均衡器,使其仅将一小部分流量发送到运行新版本的第二个集群(或第二个服务,如果在同一集群上运行)的服务。

另一个例子是,如果您使用基于 DNS 的负载平衡解决方案,您将不得不将 DNS 策略更改为加权模式,该模式将一小部分流量发送到具有新服务的服务器。

于 2017-04-19T00:25:46.213 回答