zoukankan      html  css  js  c++  java
  • spring cloud -->zuul 基本概念

    一:特点:

    路由+过滤器=Zuul

    核心为一系列的过滤器

    二:前置过滤器(Pre):

      这种过滤器在请求被路由之前调用,作用:

    1.限流(流量过大时,依据某种规则把请求挡回去,后续的逻辑就不在处理了)

    2.鉴权(如果发现没有访问权限,直接就拦截了 )

    3.参数检验调整

    三、ROUTING:

    这种过滤器将请求路由到微服务。这种过滤器用于构建发送给微服务的请求,并使用Apache HttpClient或Netfilx Ribbon请求微服务。

    四:后置过滤器(Post)

      这种过滤器在路由到微服务以后执行。这种过滤器可用来为响应添加标准的HTTP Header、收集统计信息和指标、将响应从微服务发送给客户端等

    1.统计

    2.日志

    五:异常处理器(error)

      在其他阶段发生错误时执行该过滤器,一般会在error类型和post类型过滤器中结合来处理。

    服务调用时长统计:pre和post结合使用。

    内置的特殊过滤器

    zuul还提供了一类特殊的过滤器,分别为:StaticResponseFilter和SurgicalDebugFilter

    StaticResponseFilter:StaticResponseFilter允许从Zuul本身生成响应,而不是将请求转发到源。

    SurgicalDebugFilter:SurgicalDebugFilter允许将特定请求路由到分隔的调试集群或主机。


     

    六、过滤器执行生命周期

    这张是Zuul官网提供的请求生命周期图,清晰的表现了一个请求在各个过滤器的执行顺序。

    正常流程:

    • 请求到达首先会经过pre类型过滤器,而后到达route类型,进行路由,请求就到达真正的服务提供者,执行请求,返回结果后,会到达post过滤器。而后返回响应。

    异常流程:

    • 整个过程中,pre或者route过滤器出现异常,都会直接进入error过滤器,在error处理完毕后,会将请求交给POST过滤器,最后返回给用户。

    • 如果是error过滤器自己出现异常,最终也会进入POST过滤器,将最终结果返回给请求客户端。

    • 如果是POST过滤器出现异常,会跳转到error过滤器,但是与pre和route不同的是,请求不会再到达POST过滤器了。

    七、springcloud中zuul和feign的应用场景和区别?

    1、zuul作为整个应用的流量入口,接收所有的请求,如app、网页等,并且将不同的请求转发至不同的处理微服务模块,其作用可视为nginx。
    2、feign则是将当前微服务的部分服务接口暴露出来,并且主要用于各个微服务之间的服务调用。
    两者的应用层次以及原理均不相同。
    3、zuul也含有hystrix和ribbon,基于http通讯的,可以直接代理服务就行。在它和服务间增加feign只会增加通讯消耗,没有特别的意义。feign在服务互相调用的时候用就行了,可以仿rpc通讯。
    4、Feign主要作服务端流控,Feign的负载均衡是基于Eureka实现的
    Zuul主要作客户端流控,并且Zuul的负载均衡结合Eureka实现易用性较好,并且Zuul我一般用在对第三方提供访问接口。

    原文地址:

      https://blog.csdn.net/qq_33348135/article/details/104108668

      https://blog.csdn.net/weixin_42914675/article/details/84304890

      https://blog.csdn.net/weixin_34357267/article/details/85907679

  • 相关阅读:
    Vue demo
    netcore使用IOptions
    CS0656 缺少编译器要求的成员“Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo.Create”
    vs删除空白行 注释
    RabbitMQ入门
    EF 大数据量批量处理
    常用链接字符串
    DEA使用git提交代码时,点了commit之后卡死在performing code analysis部分,或者performing code analysis结束后没有进入下一步操作。
    Ubuntu16.04安装MySQL5.7
    ubuntu16.04源码编译安装nginx1.14.2
  • 原文地址:https://www.cnblogs.com/little-tech/p/13690656.html
Copyright © 2011-2022 走看看