以太坊 测试用例 阿里巴巴 Transformer meteor onclick ldap wso2 mono Parsley pmp教学视频 bootstrap中文api文档 winbox使用教程 linux撤销 idea格式化代码设置 python数据格式 destoon模板 河南普通话报名入口 python算法 javaforeach java有哪些数据类型 java判断文件是否存在 java判断是否为空 java网络编程实例 打马赛克的软件 qtp下载 刷机工具下载 彩虹岛小草黑暗之矛 dnf传说装备 js刷新页面 流水账软件 网红照片男 快手规则 lol无法连接服务器 studioone linux解压 excel后缀 田字格字体 无线中继是什么意思 pr脱机文件怎么恢复
当前位置: 首页 > 学习教程  > 编程语言

spring-cloud-zuul 灰度发布

2021/2/13 20:08:02 文章标签: 测试文章如有侵权请发送至邮箱809451989@qq.com投诉后文章立即删除

介绍 zuul依赖于ribbon-discovery-filter-spring-cloud-starter实现灰度发布&#xff0c;通过客户端的发送到zuul上的请求所带的标志性参数进行路由。 zuul服务 maven依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spr…

介绍

   zuul依赖于ribbon-discovery-filter-spring-cloud-starter实现灰度发布,通过客户端的发送到zuul上的请求所带的标志性参数进行路由。

zuul服务

maven依赖

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
        </dependency>

        <dependency>
            <groupId>io.jmnarloch</groupId>
            <artifactId>ribbon-discovery-filter-spring-cloud-starter</artifactId>
            <version>2.1.0</version>
        </dependency>

灰度发布需要的过滤器

import com.netflix.zuul.ZuulFilter;
import com.netflix.zuul.context.RequestContext;
import io.jmnarloch.spring.cloud.ribbon.support.RibbonFilterContextHolder;

import javax.servlet.http.HttpServletRequest;

import static org.springframework.cloud.netflix.zuul.filters.support.FilterConstants.PRE_DECORATION_FILTER_ORDER;
import static org.springframework.cloud.netflix.zuul.filters.support.FilterConstants.PRE_TYPE;


public class GrayFilter extends ZuulFilter {

    @Override
    public boolean shouldFilter() {
        return true;
    }

    @Override
    public Object run() {
        HttpServletRequest request = RequestContext.getCurrentContext().getRequest();
        String mark = request.getHeader("gray_mark");
        if (mark != null && "enable".equals(mark)) {
            RibbonFilterContextHolder.getCurrentContext().add("host-mark", "gray");
        } else {
            RibbonFilterContextHolder.getCurrentContext().add("host-mark", "running");
        }
        return null;
    }


    @Override
    public String filterType() {
        return PRE_TYPE;
    }

    @Override
    public int filterOrder() {
        return PRE_DECORATION_FILTER_ORDER - 1;
    }
}

服务端

修改注册中心的配置

eureka:
  client:
    serviceUrl:
      defaultZone: http://127.0.0.1:8000/eureka   #注册中心地址
    registry-fetch-interval-seconds: 10    #客户端拉取服务端的频率
  instance:
    metadata-map:
      #host-mark: gray      #灰度标志
      host-mark: running

Http客户端

     Http客户端发送请求时需要在请求头中添加gray_mark=gray或running即可选择灰度版本或者正式版本


本文链接: http://www.dtmao.cc/news_show_700397.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?