Zuul路由转发规则
定制的路由规则的主要功能:
1、路由表中包含源路径,微服务名称,目标路径
2、Endpoint粒度配置支持
3、路由支持1对1精确路由
4、源路径可以前缀/**格式来模糊路由
5、目标路径可以使用前缀/**格式来装配目标路径
6、保留默认动态路由规则:服务名称/** --> 是否截去前缀 --> 目标路径
7、保留默认动态路由规则是否支持截去前缀的配置参数stripPrefix特性
8、路由规则可以在不重启服务动态更新,这个功能通过外化配置来支持
9、匹配股则采取谁先匹配路由谁,也就是说在路由表中有2个或以上的路由规则可能被匹配到时,匹配最先查询到的规则
路由规则格式采用properties格式:
源路径 = 微服务名称, 目标路径
启动时读取配置并解析,放入路由表。请求时通过查询匹配到合适的路由转发。
例如:
/api/v1/trade=trade,/v1/trade
/api/customer/**=customer,/api/v1/**
/api/user/**=user
在上面的例子中:
- /api/v1/trade会精确的路由到trade微服务的/v1/trade;
- /api/customer/开头的api会路由转发到customer微服务的/api/v1/**,其中后面的**会被前面的**部分替换,比如/api/customer/card->/api/v1/card的转换
- /api/user/开头的api会路由转发到user微服务的/api/user/**,endppoint不变
一、直观显示路径到微服务的映射
#localhost:8888/routes(Zuul对应的IP及端口)
management:
security:
enabled: false
二、路由配置
1、静态路由
#除了“users”服务,其他的服务都会被忽略
zuul:
ignoredServices: '*'
routes:
users: /myusers/** #前端通过/myusers的http访问,将会被后端“users”服务处理(例如:/myusers/101将会转发的/101)
zuul:
routes:
users: /myusers/** #将xxx/books后面的所有请求,添加到url后面去
示例:http://localhost:8888/books/xxx->http://localhost:5000/books/avaiable/xxx
zuul:
routes:
books: http://localhost:5000/books/available #books/xxx=>转化为http://localhost:5000/books/available/xxx
示例:http://localhost:8888/books/xxx==>http://localhost:50000/books/available/xxx
server:
port: 8888
spring:
application:
name: zuul-gateway
zuul:
routes:
books:
url: http://localhost:5000/books/available #/baidu后的所有直接添加到http://localhost:8080后
示例:http://localhost:8888/baidu/**=>http://localhost:8080/**
zuul:
routes:
baidu:
path: /baidu/**
url: http://localhost:8080
2、静态路由+ribbon负载均衡/故障切换
zuul:
routes:
myroutes1:
path: /mypath/**
serviceId: myserverId
myserverId:
ribbon:
listOfServers: localhost:8080, localhost:8081
ribbon:
eureka:
enabled: false
3、动态路由+ribbon负载均衡/故障切换
zuul:
routes:
myroutes1:
path: /mypath/**
serviceId: myserviceId
eureka:
client:
serviceUrl:
defaultZne:xxx
4、路由匹配配置
stripPrefix=true,转发会过滤掉前缀
path: /myusers/**,默认时转发到服务的请求是/**,如果stripPrefix=false,转发的请求是/myusers/**
zuul.prefix=/api 会对所有的path增加一个/api前缀
ignoredPatterns: /**/admin/** 过滤掉匹配的url
route:
users: /myusers/**
会匹配所有/myusers/**的url,但由于ignoredPatterns, /myusers/**/admin/**的请求不会被转发,而是直接由zuul里的接口接收
5、匹配顺序
path:/myusers/**
path:/**
如果是在application.yml中配置的,那么会优先匹配/myusers/**
但如果是applicaiton.properties配置的,那么可能导致/myusers/**被/**覆盖
ignored-Services: ‘*‘ 对于自动发现的services,除了route中明确指定的,其他都会被忽略
6、请求头过滤
route.sensitiveHeaders: Cookie,Set-Cookie,Authorization
默认就有这三个请求头,意思是不向下游转发请求这几个头
zuul.ignoredHeaders 是一个全局设置,而route.sensitiveHeaders是局部设置
Zuul路由转发规则的更多相关文章
- SpringCloud Zuul 路由映射规则配置
阅读目录 前言 快速入门 路由详解 Cookie与头信息 本地跳转 Hystrix和Ribbon支持 过滤器解释 动态加载 后记 回到目录 前言 本文起笔于2018-06-26周二,接了一个这周要完成 ...
- SpringCloud学习之Zuul路由转发、拦截和熔断处理(七)
Spring Cloud Zuul 服务网关是微服务架构中一个不可或缺的部分.通过服务网关统一向外系统提供REST API的过程中,除了具备服务路由.均衡负载功能之外,它还具备了权限控制等功能. Sp ...
- spring cloud 2.x版本 Zuul路由网关教程
前言 本文采用Spring cloud本文为2.1.8RELEASE,version=Greenwich.SR3 本文基于前两篇文章eureka-server.eureka-client.eureka ...
- mininet实验 动态改变转发规则实验
写在前面 本实验参考 POX脚本设置好控制器的转发策略,所以只要理解脚本. mininet脚本设置好拓扑和相关信息,所以也只要理解脚本. POX脚本目前基本看不懂. 本实验我学会了:POX控制器Web ...
- Mininet实验 动态改变转发规则
介绍 拓扑如下: 在该环境下,假设H1 ping H4,初始的路由规则是S1-S2-S5,一秒后,路由转发规则变为S1-S3-S5,再过一秒,规则变为S1-S4-S5,然后再回到最初的转发规则S1-S ...
- Mininet系列实验(六):Mininet动态改变转发规则实验
一. 实验目的 熟悉Mininet自定义拓扑脚本的编写:熟悉编写POX脚本动态改变转发规则 二.实验原理 在SDN环境中,控制器可以通过对交换机下发流表操作来控制交换机的转发行为.在本实验中,基于Mi ...
- 实战四:Gateway网关作全局路由转发
Gateway网关的作用主要是两个:路由转发,请求过滤.此篇讲的是路由转发,下篇介绍请求过滤. 一,创建网关module,添加依赖 1,new -> module -> maven 或直接 ...
- Spring Cloud Zuul路由规则动态更新
背景 Spring Cloud Zuul 作为微服务的网关,请求经过zuul路由到内部的各个service,由于存在着新增/修改/删除服务的路由规则的需求,zuul的路由规则的动态变更功能 提供了 ...
- 【七】zuul路由网关
一.zuul是什么?zuul 包含以下两个最主要的功能:1.路由功能: 负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础.2.过滤器功能: 则负责对请求的处理过程进行干预,是实现请 ...
随机推荐
- POJ 3421 X-factor Chains (因式分解+排列组合)
题意:一条整数链,要求相邻两数前一个整除后一个.给出链尾的数,求链的最大长度以及满足最大长度的不同链的数量. 类型:因式分解+排列组合 算法:因式分解的素因子个数即为链长,链中后一个数等于前一个数乘以 ...
- POJ 3616 Milking Time 【DP】
题意:奶牛Bessie在0~N时间段产奶.农夫约翰有M个时间段可以挤奶,时间段f,t内Bessie能挤到的牛奶量e.奶牛产奶后需要休息R小时才能继续下一次产奶,求Bessie最大的挤奶量.思路:一定是 ...
- 支持删除的并查集 hdu2473
题解: 代码: #include<bits/stdc++.h> using namespace std; #define ll long long ; int fa[maxn],id,vi ...
- 【AtCoder】Yahoo Programming Contest 2019
A - Anti-Adjacency K <= (N + 1) / 2 #include <bits/stdc++.h> #define fi first #define se se ...
- 【spring基础】AOP概念与动态代理详解
一.代理模式 代理模式的英文叫做Proxy或Surrogate,中文都可译为”代理“,所谓代理,就是一个人或者一个机构代表另一个人或者另一个机构采取行动.在一些情况下,一个客户不想或者不能够直接引用一 ...
- 《Gradle权威指南》--Android Gradle测试
No1: Android既可以用传统的JUnit测试,也可以用Android的instrument测试. No2: 当我们运行测试的时候,androidTest SourceSet会被构建成一个可以安 ...
- 【hdu】4521 小明序列【LIS变种】【间隔至少为d】
题目链接:https://vjudge.net/contest/228455#problem/B 转载于:https://blog.csdn.net/a709743744/article/detail ...
- java注解的概念理解
1. 注解(标注)概念:从字面意思理解是对被标注的对象(类,接口,枚举,注解类,方法,参数)的一个标记,有这个标记有什么用呢?就像学习中“划重点”的方式一样,被标记的对象肯定是特殊需要特别关照的对象, ...
- FutureTask实现超时任务
最近主要在弄一些c/s的东西,以及对接一些外部的接口. 记下一些感觉有用的东西吧. java在1.5之后有Callable和Future可以获得任务执行完毕后的结果 结合ExecutorService ...
- LOJ.6284.数列分块入门8(分块)
题目链接 \(Description\) 给出一个长为n的数列,以及n个操作,操作涉及区间询问等于一个数c的元素,并将这个区间的所有元素改为c. \(Solution\) 模拟一些数据可以发现,询问后 ...