ribbon使用eureka的meta进行动态路由

使用eureka的元数据信息,再配上ribbon的路由功能,就可以在api-gateway实现很多功能,比如灰度测试、生产调试等等。下面介绍一下,怎么使用jmnarloch大神提供的ribbon-discovery-filter-spring-cloud-starter,利用简单的几行代码搞定这一切。

maven

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

eureka元数据配置

eureka:
  instance:
    metadataMap:
      tag: pre-prod

路由

@Component
public class DynamicRoutesFilter extends ZuulFilter {

    private static final Logger LOGGER = LoggerFactory.getLogger(DynamicRoutesFilter.class);

    @Override
    public String filterType() {
        return "pre";
    }

    @Override
    public int filterOrder() {
        return 0;
    }

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

    @Override
    public Object run() {
        RequestContext requestContext = RequestContext.getCurrentContext();
        HttpServletRequest request = requestContext.getRequest();
        String tag = request.getHeader("tag");
        if(tag != null){
          RibbonFilterContextHolder.getCurrentContext().add("tag", tag);
        }
        return null;
    }
}

根据请求的tag,路由到标记有指定tag值的服务。注意,如果请求不指定tag,则代码需要判空一下,另外不指定tag的话,则默认所有同名的服务都会被路由到。

访问需要在header上指定tag

doc

时间: 2024-10-14 08:29:04

ribbon使用eureka的meta进行动态路由的相关文章

spring cloud 2.x版本 Gateway动态路由教程

摘要 本文采用的Spring cloud为2.1.8RELEASE,version=Greenwich.SR3 本文基于前面的几篇Spring cloud Gateway文章的实现. 参考 Gateway路由网关教程 Gateway自定义过滤器教程 前言 写了几篇关于Spring Cloud Gateway的文章后发现,Gateway涉及的知识范围太广了,真是深刻体会了"一入Spring cloud深似海". 现实生产环境中,使用Spring Cloud Gateway都是作为所有流量

第二百六十三也,Tornado框架-基于正则的动态路由映射分页

Tornado框架-基于正则的动态路由映射分页 分页基本显示数据 第一步.设置正则路由映射配置,(r"/index/(?P<page>\d*)", index.indexHandler),正则匹配访问路径,访问录index/后面可以是可以是0个或多个数字第二步.配置逻辑处理方法,get()方法里显示对应的页面,并传值一个SHUJU全局变量列表到html模板,这个全局变量列表里是字典显示的数据第三步.在html模板里用模板语言,循环这个列表里的字典,显示到表格里第四步.设置用

Ribbon 和 Eureka 的集成

Ribbon 是 Netflix 发布的云中间层服务开源项目,其主要功能是提供客户侧软件负载均衡算法,将 Netflix 的中间层服务连接在一起.Eureka 是一个 RESTful 服务,用来定位运行在 AWS 域(Region)中的中间层服务.本文介绍 Eureka 和 Ribbon 的集成,附带 Ribbon 自定义负载均衡算法示例.        Ribbon 和 Eureka 的集成,其实也就是让 Ribbon 充当 Eureka 架构中的 Application Client 角色.

Vue.js 中的动态路由

静态路由是不可以传递参数的.需要传递参数得用到动态路由 那么如何将参数作为路由呢? //在参数名前面加上 : ,然后将参数写在路由的 path 内 routes: [ //将页面组件与path指令的路由关联 { name: 'BookInfo', path: '/books/:id', component: BookInfo} ] 这样定义之后,vue-router就会匹配所有的:/books/1,/books/2,/books/3 --,所以说这样定义的路由的数量是不确定的. 在<router

vue-router+vuex实现加载动态路由和菜单

前言 动态路由加载和动态菜单渲染的应用在后端权限控制中十分常见,后端只要加载权限路由进行渲染返回到浏览器就可以.在前后端分离中,权限控制动态路由和动态菜单也是一个非常常见的问题.其实我们最最理想的效果是什么呢?我们访问一个应用,在登录之前有哪些路由是一定要加载的呢?你看我总结如下,你看下是不是这些: 1.登录路由 (登录功能路由) 2.系统路由(系统消息路由,比如欢迎界面,404,error等的路由) 但是在vue中,一旦实例化,就必须初始化路由,但这个时候你还没有登录,没有获取你的权限路由呀,

CIsco动态路由配置之EIGRP

Cisco配置动态路由,可以使用EIGRP(增强型内部网关路由选择协议)进行配置 EIGRP支持: 快速收敛:使用DUAL(弥散更新算法)来实现快速收敛. 带宽的有效利用:发送部分.增量的路由更新而不是发送整个路由表,从而实现带宽的有效利用. 支持多个网络层协议:使用独立于协议的模块(PDM)来支持IP,IPX,Appletalk等协议. 支持VLSM(变长子网掩码)和CIDR(无类域间路由) 思路:分别配置各个路由器的端口IP 使用EIGRP 在各自路由器配置所属的网段 R1#CONF T E

Cisco PT模拟实验(13) 路由器RIP动态路由的配置

Cisco PT模拟实验(13) 路由器RIP动态路由的配置 实验目的: 掌握RIP动态路由选择协议的配置方法 掌握路由选择表中的RIP路由描述 熟悉路由选择和分组转发的原理及过程 实验背景: 公司通过一台三层交换机连到企业网的出口路由器上,路由器再与互联网服务提供商 ISP的另一台路由器连接.现要企业网设备上做适当配置,实现企业网内部主机与外网主机之间的相互通信.为了简化网管的管理维护工作,公司决定采用动态路由配置 -- RIPv2协议实现互通. 技术原理: 动态路由选择:路由器使用路由选择协

第一章 大网高级 &nbsp; 动态路由RIP

  动态路由 实验要求: (一)配置路由器的接口地址,实现路由互通. (二)配置RIP v1 ,使用show IP route命令查看路由表,在R2上ping R1 或R3, 验证网络通信是否正常. (三)配置RIP v2 ,使用ping,show IP route查看命令,验证网络通信是否正常. 一.接口地址设置 二.RIPv1设置 三.查看路由表 R1 R2 R3 四.验证 五.RIPv2 设置(版本2) R1 R2 R3 六.查看路由表 R1 R2 R3 七.验证

动态路由距离矢量路由协议RIP

动态路由距离矢量路由协议RIP R1连接R2连接R3 R1 ip192.168.12.1 R2 ip192.168.12.2,192.168.23.2 R3 ip192.168.23.3,lo:3.3.3.3 R1(config)#int s0/0 R1(config-if)#ip add 192.168.12.1 255.255.255.0 R1(config-if)#no shut R1(config)#router rip R1(config-router)#network 192.168