gpt4 book ai didi

spring-cloud - Spring Cloud : Canary Deployments with Zuul

转载 作者:行者123 更新时间:2023-12-03 15:01:14 24 4
gpt4 key购买 nike

我开始使用 Eureka 和 Zuul 使用 Spring Cloud,并且对构建蓝/绿和 Canary 部署有一些疑问。到目前为止,我已经完成了基础工作,并让 Eureka、Zuul 和配置服务器按预期工作。我想要完成的是设置一个有两个版本的服务,比如 1.0 和 1.1。对于特定用户的子集,我想将他们路由到 1.1 版本,而其他所有人都应该转到 1.0 版本。

Zuul 过滤器 API 对文档的了解有点少,我正在努力理解一些概念,所以我想在这里问几个问题。我还运行了一些基本过滤器,除了获取委托(delegate)人的身份和他们请求的服务之外,它们并没有做很多事情。我碰壁的地方是了解如何向 Eureka 和 Zuul 公开同一服务的两个不同版本。我很好奇的几件事:

  • 在文档、帖子和其他堆栈溢出之间,术语“服务”和“集群”似乎可以互换使用。它是否正确?
  • 话虽如此,如果我有一个名为 /simpleservice 的服务我要公开两个不同的 serviceID(即 simpleservicesimpleservice-1.1 )吗?如果我这样做,当目标用户之一请求 /simpleservice ,我让 Zuul 将它们发送到 /simpleservice-1.1
  • 或者,您是否将另一个节点添加到现有服务 ID 并为每个节点添加额外的元数据,以便 Zuul 区分 1.0 和 1.1 版本?
  • 正确答案是“以上所有”吗? :)
  • 最佳答案

    假设您也在使用 Ribbon,我将保留服务 ID。相反,我会看看 com.netflix.loadbalancer 包裹。 Canary 部署本质上是具有非常特定约束的负载平衡。您可以实现自己的 AbstractLoadBalancerRule 它根据您希望作为路由基础的某些属性来选择服务器。然后将该规则添加到 Zuul 实例的配置中。

    @Configuration
    public class CanaryConfiguration {
    @Bean public IRule canaryDeploymentRule(IClientConfig config) {
    CanaryDeploymentRule rule = new CanaryDeploymentRule ();
    rule.initWithNiwsConfig(config);
    return rule;
    }
    }

    如果你让你的服务使用不同的服务 ID(“simpleservice”和“simpleservice-x.y”)在 Eureka 中注册自己,我想事情肯定会变得复杂。从 Eureka 检索可用服务器列表时,您必须扩展发现客户端以忽略版本部分(“-x.y”,同时仍然能够处理“foo-service”),然后执行一些选择过程来选择反正是对的。所以我想事情会变得更加复杂。

    这一切都基于最佳猜测,我实际上并没有实现这一点。我意识到这个问题已经快 4 个月了。因此,如果您在此期间找到了其他解决方案,那么如果您可以在自己的问题的答案中分享它,那就太好了。

    关于spring-cloud - Spring Cloud : Canary Deployments with Zuul,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31786040/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com