架构概览
从更高角度看,Zuul2.0就是一个运行了好多前置过滤器(入口过滤器)的Netty server,通过一个Netty Client代理转发这些请求,然后执行一系列后置过滤器(出口过滤器),最后返回结果。
过滤器
过滤器是Zuul的核心逻辑所在。如上图所示,他们能够做大范围的操作,并且可以请求-响应周期的各个部分执行。
- Inbound Filters在路由请求到后端服务之前执行,可以用于身份验证、路由和封装请求。
- Endpoint Filters可以用来返回静态响应,否则内置的ProxyEndpoint过滤器会将请求路由到后端服务
- Outbound Filters从后端服务获取响应后执行,可以用于度量,封装响应,自定义响应头。
还有两种过滤器类型:同步和异步。因为这些过滤器运行在一个事件循环机制上,所以绝对不要在过滤器里阻塞。如果要阻塞在一个异步过滤器中进行,可以使用一个单独的线程池。否则应该使用同步过滤器