您好,欢迎来到12图资源库!分享精神,快乐你我!我们只是素材的搬运工!!
  • 首 页
  • 当前位置:首页 > 开发 > WEB开发 >
    亿级流量架构的网关设计思绪与常见网关比照(4)
    时间:2021-08-07 21:11 来源:网络整理 作者:网络 浏览:收藏 挑错 推荐 打印

    Endpoint过滤器担任基于incoming过滤器的执行来处置央求。Zuul有一个内置的过滤器(ProxyEndpoint),用于将央求代理到后端效劳器,因此这些过滤器的典型用途是用于静态端点。例如:安康反省照应,静态错误照应,404照应。

    Outgoing

    Outgoing过滤器在从后端接纳到照应以后执行处置操作。通常状况下,它们更多地用于构成照应和添加目的,而不是用于任何繁重的任务。例如:存储统计信息、添加/剥离标准标题、向实时流发送事情、gziping照应。

    过滤器类型

    下面是与一个央求典型的生命周期对应的标准的过滤器类型:

    PRE :路由到Origin之前执行

    ROUTING :路由到Origin时期执行

    POST :央求被路由到Origin之后执行

    ERROR :发作错误的时分执行

    这些过滤器协助我们执行以下功用:

    身份验证和安全性 :辨认每个资源的身份验证需求,并拒绝不满足它们的央求

    监控 :在边缘跟踪有意义的数据和统计数据,以便给我们一个准确的消费视图

    静态路由 :静态路由央求到不同的后端集群

    压力测试 :逐渐添加集群的流量,以评价功用

    限流 :为每种央求类型分配容量,并丢弃超过限制的央求

    静态照应处置 :直接在边缘构建一些照应,而不是将它们转发到外部集群

    Zuul 1.0 央求生命周期

    亿级流量架构的网关设计思绪与常见网关比照

    Netflix宣布了通用API网关Zuul的架构转型。Zuul本来采用同步阻塞架构,转型后叫作Zuul 2,采用异步非阻塞架构。Zuul 2和Zuul 1在架构方面的主要区别在于,Zuul 2运转在异步非阻塞的框架上,比如Netty。Zuul 1依赖多线程来支持吞吐量的增长,而Zuul 2运用的Netty框架依赖事情循环和回调函数。

    Zuul 2.0

    Zuul 2.0架构图:

    亿级流量架构的网关设计思绪与常见网关比照

    上图是Zuul2的架构,和Zuul 1没有本质区别,两点变化:

    前端用Netty Server替代Servlet,目的是支持前端异步。后端用Netty Client替代Http Client,目的是支持后端异步。

    过滤器换了一下名字,用Inbound Filters替代Pre-routing Filters,用Endpoint Filter替代Routing Filter,用Outbound Filters替代Post-routing Filters。

    Inbound Filters :路由到Origin之前执行,可以用于身份验证、路由和装饰央求

    Endpoint Filters :可用于前往静态照应,否则内置的ProxyEndpoint过滤器将央求路由到Origin

    Outbound Filters :从Origin那里获取照应后执行,可以用于度量、装饰用户的照应或添加自定义header

    有两种类型的过滤器:sync和async。由于Zuul是运转在一个事情循环之上的,因此历来不要在过滤中阻塞。假设你非要阻塞,可以在一个异步过滤器中这样做,并且在一个独自的线程池上运转,否则可以运用同步过滤器。

    上文提到过 Zuul 2末尾采用了异步模型 。

    优势是异步非阻塞形式启动的线程很少,基本上一个CPU core上只需启一个事情环处置线程,它运用的线程资源就很少,上下文切换(Context Switch)开支也少。非阻塞形式可以接受的衔接数大大添加,可以复杂了解为央求来了只需求进队列,这个队列的容量可以设得很大,只需不超时,队列中的央求都会被依次处置。

    (责任编辑:admin)