限流 - 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
request authentication
choosing origin servers(选机器)
logging debug info.
限流
执行时机: before routing to the origin.
这类filter可能做的事
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
adding standard HTTP headers to the response
gathering statistics and metrics
streaming the response from the origin to the client
执行时机:after the request has been routed to the origin
这类filter可能做的事
ERROR Filters
执行时机:其他三个阶段任一阶段发生错误时执行(when an error occurs during one of the other phases)
例如:我们自定义一个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)