最近在项目中使用了SpringCloud,基于Zuul搭建了一个提供加解密、鉴权等功能的网关服务。鉴于之前没怎么使用过Zuul,于是顺便仔细阅读了它的源码。实际上,Zuul原来提供的功能是很单一的:通过一个统一的Servlet入口(ZuulServlet
,或者Filter
入口,使用ZuulServletFilter
)拦截所有的请求,然后通过内建的com.netflix.zuul.IZuulFilter
链对请求做拦截和过滤处理。ZuulFilter
和javax.servlet.Filter
的原理相似,但是它们本质并不相同。javax.servlet.Filter
在Web应用中是独立的组件,ZuulFilter
是ZuulServlet
处理请求时候调用的,后面会详细分析。