zuul加载流程
- ZuulServerAutoConfiguration会在项目启动时加载,它会默认加载ZuulServlet和ZuulController;
- 有请求进入时,会调用ZuulController. handleRequest();这个方法负责处理请求,方法结束时,会执行unset(),目的是清理threadlocal的请求数据;
- handleRequest ()执行时,会调用父类(ServletWrappingController)的handleRequestInternal();
- handleRequestInternal()执行时,会调用ZuulServlet.service();
- service()方法中,调用preRoute():执行request前的filters,有多个的话,会挨个执行;如果执行过程中报错,则执行error的filters;然后执行postRoute():执行request后的filters;如果没有报错,则执行route():执行request的处理,并且根据配置执行重试和熔断操作,zuul默认的RibbonRoutingFilter类负责处理这部分处理;执行完之后,执行postRoute():执行request后的filters。