zoukankan      html  css  js  c++  java
  • Nepxion discovery的一些使用

       最近在接入全链路灰度的测试,调研了nepxion discovery,研究了下nepxion discovery怎么接入的问题,在这里记录下心得。

       https://github.com/Nepxion/Discovery

       无需介绍,只要想做spring cloud灰度发布,肯定都会调研过这个神器,目测也有很多使用心得,这里只说一些自己接入的感受。

       1. 如果需要灰度,Nepxion discovery还是需要开发撸一些代码作为灰度规则的,也需要自己手动撸一些代码的,包括流量判断,环境判断,标记判断,版本判断等灰度发布的策略支持。

     在impl里,需要手动实现拦截器,进行拦截,举例如下:

       如果我需要根据版本灰度,我需要实现以下拦截器:

       

    public class MyDiscoveryEnabledStrategy extends DefaultDiscoveryEnabledStrategy {
    private static final Logger LOG = LoggerFactory.getLogger(MyDiscoveryEnabledStrategy.class);

    // 对REST调用传来的Header参数(例如:mobile)做策略
    @Override
    public boolean apply(Server server) {
    String mobile = strategyContextHolder.getHeader("mobile");
    String serviceId = pluginAdapter.getServerServiceId(server);
    String version = pluginAdapter.getServerVersion(server);
    String region = pluginAdapter.getServerRegion(server);
    String environment = pluginAdapter.getServerEnvironment(server);
    String address = server.getHostPort();

    LOG.info("负载均衡用户定制触发:mobile={}, serviceId={}, version={}, region={}, env={}, address={}", mobile, serviceId, version, region, environment, address);

    if (StringUtils.isNotEmpty(mobile)) {
    // 手机号以移动138开头,路由到1.0版本的服务上
    if (mobile.startsWith("138") && StringUtils.equals(version, "1.0")) {
    return true;
    // 手机号以联通133开头,路由到2.0版本的服务上
    } else if (mobile.startsWith("133") && StringUtils.equals(version, "1.1")) {
    return true;
    } else {
    // 其它情况,直接拒绝请求
    return false;
    }
    }

    return true;
    }
    }

       在这里,灰度版本是1.1,常规版本是1.0,也就是说,根据header的值来进行路由,到底是选择常规版本还是灰度版本。

       这是使用discovery在我们的demo项目上增加的filter。

       在压测中出现过一个问题,nepxion集成了zuul,在引用了nepxion的jar包后,需要自定义semaphore.maxSemaphores,否则,压测达到1k+并发的时候,就会触发我们的熔断了。

  • 相关阅读:
    《Programming WPF》翻译 第8章 1.动画基础
    一些被遗忘的设计模式
    《Programming WPF》翻译 第4章 数据绑定
    《Programming WPF》翻译 第3章 控件
    《Programming WPF》翻译 第5章 样式和控件模板
    《Programming WPF》翻译 第7章 绘图
    《Programming WPF》翻译 第9章 自定义控件
    《Programming WPF》翻译 第7章 绘图 (2)
    《Programming WPF》翻译 第8章 前言
    关于Debug和Release之本质区别
  • 原文地址:https://www.cnblogs.com/spillage/p/11996710.html
Copyright © 2011-2022 走看看