Zull
2021-11-01 12:46:12 9 举报
AI智能生成
zull核心原理
作者其他创作
大纲/内容
过滤器
pre
执行时间
在请求被路由到原服务器前要执行的过滤器
应用场景
认证
选路由
请求日志
route
此类型为发送请求到上游服务的过滤器,比如使用Apache HttpClient或NetflixRibbon请求上游服务
post
此类型为上游服务返回之后调用的过滤器,可用来为响应添加HTTP响应头、收集统计信息和指标、将响应回复给客户端
error
此类型为在其他阶段发生错误时执行的过滤器
处理流程
1. 当外部请求到达Zuul网关时,首先会进入pre处理阶段,在这个阶段请求将被pre类型的过滤器处理,以完成再请求路由的前置过滤处理,比如请求的校验等。在完成pre类型的过滤处理之后,请求进入第二个阶段:route路由请求转发阶段
2. 在route路由请求转发阶段,请求将被route类型的过滤器处理,route类型的过滤器将外部请求转发到上游的服务。当服务实例的结果返回之后,route阶段完成,请求进入第三个阶段:post处理阶段
3. 在post处理阶段,请求将被post类型的过滤器处理,post类型的过滤器在处理的时候不仅可以获取请求信息,还能获取服务实例的返回信息,所以post阶段可以对处理结果进行一些加工或转换等
4. 还有一个特殊的阶段error,在该阶段请求将被error类型的过滤器处理,在上述3个阶段发生异常时才会触发,但是error过滤器也能将最终结果返回给请求客户端
核心类
ZuulFilter
filterType
返回自定义过滤器的类型,以常量的形式定义在FilterConstants
filterOrder
返回过滤器顺序,值越小优先级越高
shouldFilter
返回过滤器是否生效的boolean值,返回true代表生效,返回false代表不生效
run
过滤器的处理逻辑。在该函数中,可以进行当前的请求拦截和参数定制,也可以进行后续的路由定制,同时可以进行返回结果的定制
0 条评论
下一页