网站首页 > java教程 正文
一、zuul简介
1、作用
zuul使用一系列的filter实现以下功能
认证和安全 - 对每一个resource进行身份认证
追踪和监控 - 实时观察后端微服务的TPS、响应时间,失败数量等准确的信息
日志 - 记录所有请求的访问日志数据,可以为日志分析和查询提供统一支持
动态路由 - 动态的将request路由到后端的服务上去
压力测试 - 逐渐的增加访问集群的压力,来测试集群的性能
限流 - allocating capacity for each type of request and dropping requests that go over the limit
静态响应 - 直接在网关返回一些响应,而不是通过内部的服务返回响应
2、组件:
zuul-core :library which contains the core functionality of compiling and executing Filters
zuul-netflix :library which adds other NetflixOSS components to Zuul - using Ribbon for routing requests, for example.
3、例子:
zuul-simple-webapp :webapp which shows a simple example of how to build an application with zuul-core
zuul-netflix-webapp :webapp which packages zuul-core and zuul-netflix together into an easy to use package
github地址:https://github.com/Netflix/zuul/
二、zuul filter
1、关键元素
Type :most often defines the stage during the routing flow when the Filter will be applied (although it can be any custom string)
值可以是:pre、route、post、error、custom
Execution Order : filter执行的顺序(applied within the Type, defines the order of execution across multiple Filters)
Criteria :filter执行的条件(the conditions required in order for the Filter to be executed)
Action : filter执行的动作(the action to be executed if the Criteria is met)
注意点:
filters之间不会直接进行通讯交流,他们通过一个RequestContext共享一个state
该RequestContext对于每一个request都是唯一的
filter当前使用groovy来写的,也可以使用java
The source code for each Filter is written to a specified set of directories on the Zuul server that are periodically polled for changes
zuul可以动态的read, compile, and run these Filters
被更新后的filter会被从disk读取到内存,并动态编译到正在运行的server中,之后可以用于其后的每一个请求(Updated filters are read from disk, dynamically compiled into the running server, and are invoked by Zuul for each subsequent request)
2、filter type(与一个典型的request的生命周期相关的filter type)
PRE Filters
执行时机: before routing to the origin.
这类filter可能做的事
request authentication
choosing origin servers(选机器)
logging debug info.
限流
ROUTING Filters
这类filter可能做的事:真正的向service的一台server(这台server是pre filter选出来的)发请求,handle routing the request to an origin,This is where the origin HTTP request is built and sent using Apache HttpClient or Netflix Ribbon.
POST Filters
执行时机:after the request has been routed to the origin
这类filter可能做的事
adding standard HTTP headers to the response
gathering statistics and metrics
streaming the response from the origin to the client
ERROR Filters
执行时机:其他三个阶段任一阶段发生错误时执行(when an error occurs during one of the other phases)
CUSTOM Filters
沿着默认的filter流,zuul允许我们创建一些自定义的Filter type,并且准确的执行他们。
例如:我们自定义一个STATIC type的filter,用于从zuul直接产生响应,而不是从后边的services(we have a custom STATIC type that generates a response within Zuul instead of forwarding the request to an origin)
三、zuul request lifecycle(filter流)
说明:对应(二)的filter type来看
四、zuul核心架构
zuul的核心就是:filter、filter流与核心架构。
猜你喜欢
- 2024-10-23 阿里蚂蚁金服中间件(Java 4轮面试题含答案):Re...
- 2024-10-23 阿里Java60万年薪(4面真题):线程同步+数据库锁+中间件等
- 2024-10-23 面试分享:中间件RabbitMQ面试专题及Java架构知识点整理!
- 2024-10-23 吐血总结了各个中间件是如何实现持久化的
- 2024-10-23 学习分享之《大型网站系统与Java中间件实践》
- 2024-10-23 Arquillian:针对Java中间件的集成测试和功能性测试平台
- 2024-10-23 java数据库读写分离-数据库中间件DBProxy
- 2024-10-23 java面试中,面试官:如何处理消息中间件(MQ)消息丢失问题?
- 2024-10-23 阿里Java高级岗中间件二面:GC+IO+JVM+多线程+Redis+数据库+源码
- 2024-10-23 Java中间件-ehcache(Java中间件错误整理)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)