SpringCloud Zuul在何种情况下使用Hystrix及问题小结
"SpringCloud Zuul在何种情况下使用Hystrix及问题小结" SpringCloud Zuul在何种情况下使用Hystrix是指在Zuul路由中 何时使用Hystrix来处理路由请求。Hystrix是Netflix提供的一个 latency and fault tolerance library,主要用于处理分布式系统中的延迟和故障问题。在Zuul中,Hystrix被用来处理RouteFilter中 的路由请求。 在Zuul的自动配置类ZuulServerAutoConfiguration和ZuulProxyAutoConfiguration中,总共会向Spring容器注入3个Zuul的RouteFilter,分别是SimpleHostRoutingFilter、RibbonRoutingFilter和SendForwardFilter。 SimpleHostRoutingFilter是通过HttpClient向预定的URL发送请求的路由Filter,生效条件是RequestContext中的routeHost不为空,routeHost就是URL,即使用URL直连。 RibbonRoutingFilter是使用Ribbon、Hystrix和可插入的http客户端发送请求的路由Filter,生效条件是RequestContext中的routeHost为空,即URL为空,RequestContext中的serviceId不为空,并且RequestContext中的sendZuulResponse为true,即是否将response发送给客户端,默认为true。 SendForwardFilter是forward到本地URL的路由Filter,生效条件是RequestContext中包含FORWARD_TO_KEY,即URL使用forward映射,并且RequestContext中SEND_FORWARD_FILTER_RAN为false,SEND_FORWARD_FILTER_RAN意为“sendforward是否运行过了”。 在使用serviceId映射的方法路由转发的时候,会使用Ribbon+Hystrix,而哪种路由配置方式是“URL映射”,哪种配置方式又是“serviceId映射”呢?Zuul有一个前置过滤器PreDecorationFilter用于通过RouteLocator路由定位器决定在何时以何种方式路由转发。 RouteLocator是用于通过请求地址匹配到Route路由的,之后PreDecorationFilter再通过Route信息设置RequestContext上下文,决定后续使用哪个RouteFilter做路由转发。 因此,在使用Zuul时,需要理解RouteLocator的作用,以及PreDecorationFilter如何设置RequestContext请求上下文。RouteLocator是 Zuul路由定位器,用于根据请求路径匹配路由,并将匹配到的路由信息保存在Route对象中。 Route对象是org.springframework.cloud.netflix.zuul.filters.Route的实例,用于路由转发。 ZuulProperties.ZuulRoute是用于和zuul配置文件关联,保存相关信息的类。 在Zuul中使用Hystrix是为了处理路由请求中的延迟和故障问题,而RouteLocator和PreDecorationFilter是 Zuul路由转发的关键组件。
- 粉丝: 7
- 资源: 902
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助