zuul执行逻辑
2020-11-18 14:16:39 16 举报
zuul框架的执行逻辑
作者其他创作
大纲/内容
String filterType();
ZuulFilterInitializer
RequestContext getCurrentContext()
缓存Filter名字->Filter代码的映射
FilterRegistry filterRegistry
缓存Filter名称->Filter最后修改时间戳的映射
缓存字符串到ZuulFilter实例的映射关系
动态代码编译器
具体的Filter的调用顺序在这里实现
Filter注册
FilterRegistry
void manageFiles()
Object runFilters(String filterType)
filter的类型: pre route post error
FilterFileManager
Groovy文件Filter
FilterLoader
ZuulRunner
ThreadLocal实例,用于存放所有的RequestContext
Filter调用过程
ZuulServlet
DynamicCodeCompiler COMPILER
缓存Filter名字->Filter名字的映射,用于存在性判断
int filterOrder()
ZuulFilterResult runFilter()
Object processZuulFilter(ZuulFilter filter)
FilterProcessor
作用 : 如果ThreadLocal中已经绑定了RequestContext静态实例就直接获取绑定在线程中的RequestContext实例,否则新建一个RequestContext实例存放在ThreadLocal(绑定到当前的请求线程中)
ThreadLocal<? extends RequestContext> threadLocal
获取注册了的Filter
Zuul中基于文件加载ZuulFilter的逻辑已经十分清晰:后台启动一个守护线程,定时轮询指定文件夹里面的文件,如果文件存在变更,则尝试更新指定的ZuulFilter缓存,FilterFileManager的init方法调用的时候在启动后台线程之前会进行一次预加载。
init方法是核心静态方法,它具备了配置,预处理和激活后台轮询线程的功能
Object run() throws ZuulException
boolean shouldFilter()
缓存Filter类型名称->List<ZuulFilter>的映射
Filter注册表
ZuulRunner zuulRunner
拦截后做的逻辑
ZuulServerAutoConfiguration
ZuulFilter
0 条评论
回复 删除
下一页