SpringCloud Zuul网关的简单理解
Zuul网关功能
请求路由、服务路由、请求过滤
请求路由
参数配置如下所示,所有能够配置path规则的请求,都会被zuul网关转发到对应的url上。
zuul.routes.user-service.path=/user-service/**
zuul.routes.user-service.url=http://178.69.1.39:9104/
服务路由
参数配置如下所示,zuul会对服务user-service进行路由,所有能够配置path规则的请求,都会被zuul网关转发到serivce-id服务上。
zuul.routes.user-service.path=/user-service/**
zuul.routes.user-service.serviceId=user-service/**
zuul.routes.user-service.strip-prefix=false
Zuul内置Hystrix和Ribbon
Zuul内置Hystrix和Ribbon模块的依赖,所以zuul天生就拥有线程隔离和断路器的自我保护功能,以及对服务调用的客户端负载均衡功能。
当使用path与url的映射关系来配置路由规则的时候,对于路由转发的请求不会采用hystrixCommand来包装,所以这类请求没有线程隔离和断路器的保护,并且也不会有负载均衡的能力。
因此,在使用zuul的时候尽量使用path和serviceId的组合(也就是服务路由)来进行配置,这样不仅可以保证api网关的健壮和稳定,也能用到ribbon的客户端负载均衡功能。
Zuul配置Hystrix和Ribbon,详情见:
https://www.cnblogs.com/expiator/p/10753746.html
请求过滤ZuulFilter
如果想过滤请求,可以继承ZuulFilter类,重写方法。
/**
*
* Standard types in Zuul are "pre" for pre-routing filtering,
* "route" for routing to an origin, "post" for post-routing filters, "error" for error handling.
*
* 过滤的类型,可以返回"pre"、"route"、"post"、"error"
* filterType() - 按类型对过滤器进行分类。 可以返回用于预路由过滤的“pre”,用于路由到原点的“route”,
* 用于后路由过滤的“post”,用于错误处理的“error”。
* @return
*/
@Override
public String filterType() {
return "pre";
}
/**
*
* filterOrder() must also be defined for a filter. Filters may have the same filterOrder if precedence is not
* important for a filter. filterOrders do not need to be sequential.
* 返回数字,表示过滤器执行的顺序。filterOrders返回的结果不需要是连续的顺序,如1,2,3,4。
* @return
*/
@Override
public int filterOrder() {
return 0;
}
/**
* 是否过滤
* @return
*/
@Override
public boolean shouldFilter() {
return true;
}
/**
* 过滤器的具体逻辑。
* @return
*/
@Override
public Object run() {}
参考资料:
《SpringCloud微服务实战》
SpringCloud Zuul网关的简单理解的更多相关文章
- spring-cloud zuul网关
API Gateway 是随着微服务(Microservice)这个概念一起兴起的一种架构模式,它用于解决微服务过于分散,没有一个统一的出入口进行流量管理的问题. 使用 Zuul 实现 API Gat ...
- SpringCloud Zuul网关超时
最近在使用SpringCloudZuul网关时,报错"NUMBEROF_RETRIES_NEXTSERVER_EXCEEDED", 查询资料后,发现: ribbon.Connect ...
- springCloud Zuul网关
1.springboot 仅2.0.x 支持,在此选择 2.0.7 2.新建Module eureka-zuul-client 3.导入依赖 <?xml version="1.0&qu ...
- SpringCloud zuul 网关限流分析
最近项目中 spring cloud zuul 运用到限流功能,打算配置一下就直接使用,不过在压测与调优过程中遇到一些没有预测到的问题,附上排查与解析结果 yml.pom配置 强烈推荐,按最新gith ...
- springCloud zuul网关服务
第一步:编写application.properties文件 spring.application.name=api-gateway server.port=5555 zuul.routes.user ...
- springcloud -zuul(1-zuul的简单使用)
1.maven引入包 <dependency> <groupId>org.springframework.cloud</groupId> <artifactI ...
- SpringCloud(7)---网关概念、Zuul项目搭建
SpringCloud(7)---网关概念.Zuul项目搭建 一.网关概念 1.什么是路由网关 网关是系统的唯一对外的入口,介于客户端和服务器端之间的中间层,处理非业务功能 提供路由请求.鉴权.监控. ...
- springcloud 实战 网关zuul使用中遇到的相关问题
springcloud 实战 网关zuul使用中遇到的相关问题 1.网关zuul使用时,跨域问题在网关中配置pre过滤器: response.setHeader("Access-Contr ...
- springcloud学习之路: (三) springcloud集成Zuul网关
网关就是做一下过滤或拦截操作 让我们的服务更加安全 用户访问我们服务的时候就要先通过网关 然后再由网关转发到我们的微服务 1. 新建一个网关服务Module 2. 依然选择springboot工程 3 ...
随机推荐
- ThinkPhp框架分页查询和部分框架知识
一.一个条件的查询数据 查询数据自然是先要显示出数据,然后根据条件进行查询数据 (1)显示出表的数据 这个方法我还是写在了HomeController.class控制器文件中 (1.1)写了一个方法s ...
- BAT开发中,ChromeDriver版本兼容性检查
打开解决方案的Nuget包管理器,选择合适的版本,安装即可.版本的兼容性检查,见上一篇blog(初次使用BAT,请检查Chrome浏览器和ChromeDriver兼容性 https://www.cnb ...
- linux日志logger命令详解
通过logger命令记录日志 logger是一个shell命令接口,可以通过该接口使用Syslog的系统日志模块,还可以从命令行直接向系统日志文件写入一行信息. ------------------- ...
- docker swarm 搭建与服务更新
一,docker swarm 是什么 Docker Swarm.Docker Machine与Docker Compose号称Docker三剑客Docker Swarm 和 Docker Compos ...
- mysql------Windows7 64bit安装教程------下载mysql
.1.进入官网的下载位置,https://dev.mysql.com/downloads/installer/: 2.选择“Windows”; 3.点击"MySQL Installer&qu ...
- ARM开发板挂载虚拟机 nfs目录
ARM开发板做相关开发,为了调试方便,常把开发板mnt目录挂载到虚拟机nfs共享目录上,这样调试程序时候就不用把程序转到开发板上再运行,方便很多.要挂载nfs共享目录,需要安装必要的组件支持. 1.虚 ...
- php+ajax 文件上传
html 代码 <form action="{pboot:form fcode=8}" method="post" id="t" en ...
- java-其他-索引
数据结构 设计模式 算法题
- Kafka(3)--kafka消息的存储及Partition副本原理
消息的存储原理: 消息的文件存储机制: 前面我们知道了一个 topic 的多个 partition 在物理磁盘上的保存路径,那么我们再来分析日志的存储方式.通过 [root@localhost ~]# ...
- 远程git仓库的搭建
具体的操作见另一篇 第一部分: 安装 1. 下载地址: https://git-scm.com/download/win; 如果速度慢, 使用 迅雷下载; 2. 点击安装, 然后下一步, 直到下面这 ...