SpringCloud 之 Zuul 源码详细分析

1.zuul介绍

Zuul 在 Spring Cloud 微服务体系中担任很重要的角色--服务网关,是基于JVM的路由器和负载均衡器。

2.总的调用路径

1.HandleMapping -> 2.ZuulController -> 3.ZuulServlet.service() -> 4.RibbonRoutingFilter ->
5.HystrixCommand.execute() -> 6.AbstractRibbonCommand.run() ->
7.RibbonLoadBalancingHttpClient.executeWithLoadBalance() ->
8.LoadBalancerCommand.submit() -> 9.RibbonLoadBalancingHttpClient.execute() 
->10.HttpClient.execute()

1-4 都比较容易,5是为了有熔断效果所以用 Hystrix 进行包装,实际的逻辑都是对应的 Command 完成,7是不同的 Command 持有一个对应的 Client,执行 executeWithLoadBalance() 为了达到负载均衡和重试的效果,这个效果就交给 8.LoadBalancerCommand 完成,但是 LoadBalancerCommand 也只负责重试和负载均衡,具体执行的远程 http 请求还是由 9 来完成,而每个 BalancingClient 都是持有个真实的 client, 如: HttpClient, OKHttp,由这些 client 执行。

3. Zuul 处理流程

3.1处理流程如下:

Request => ZuulHandlerMapping => ZuulController => ZuulServlet

你可能感兴趣的:(SpringCloud 之 Zuul 源码详细分析)