zoukankan      html  css  js  c++  java
  • 服务网关

    服务网关 统一的挡在前面服务 日志、限流、权鉴

    网关在微服务的定位

    外部请求(手持终端、html5、Open接口)==》 负载均衡(Nginx等) ==》 网关 ==》 微服务(A,B,C)

    (zuul 1.x 是一个基于阻塞 I/O 的API Gateway,是基于Servlet2.5使用阻塞架构,它不支持长连接(如 WebSocket)Zuul的设计模式和Nginx比较像,每次IO操作都是从工作线程中选择一个执行,请求线程被阻塞到工作线程完成,但Nginx是C++,Zuul是java,而JVM本身会有第一次加载比较慢的情况,所以使得Zull性能相对较差,而zuul 2.x,zuul公司内部有点矛盾,各种跳票,但本身是Netty还是很优秀的,能够Netty进行非阻塞和长连接。)

    Spring Cloud Gateway 具有如下特性:

    (1)动态路由: 能够匹配任何请求属性;
    (2)可以对路由指定 Predicate(断言)和Filter(过滤器);
    (3)集成Hystrix的断路器功能;
    (4)继承Springcloud 服务发现功能;
    (5)易于编写的Predicate(断言)和Filter(过滤器);
    (6)请求限流功能;
    (7)支持路径重写

    Gateway网关 三大概念: Route(路由)、Predicate(断言)、Filter(过滤器)

    (1)路由是构建网关的基本模块,它由ID,目标URI,一系列的断言和过滤器组成,如果断言为true则匹配该路由(路由转发)
    (2)开发人员可以匹配HTTP请求中的所有内容(例如请求头或请求参数),如果请求与断言相匹配则进行路由
    (3)过滤值得是Spring框架中GatewayFilter的实例,使用过滤器,可以在请求被路由前或者之后对请求进行修改。

    web请求,通过一些匹配条件,定位到真正的服务节点。并在这个转发过程的前后,进行一些精细化控制;predicate就是它的匹配条件;filter就可以理解成一个无所不能的拦截器,有了这两个元素,再加上目标uri,就可以实现一个具体的路由了。

    首先route 判断 predicate 是否为true 进行下一步的转发,然后进来之后再用过滤链,最终转发到微服务

    过滤器在发送代理请求之前(“pre”)或之后(“post”)执行业务逻辑。
    Filter在“pre”类型的过滤器可以做参数校验、权限校验、流量监控、日志输出、协议转换等。
    在“post”类型的过滤器中可以做响应内容、响应头的修改,日志的输出,流量监控等有着非常重要的作用。

    Gateway工作流程的核心逻辑就是 路由转发 + 执行过滤器链

    默认情况下Gateway会根据注册中心注册的服务列表,以注册中心上微服务名为路径创建动态路由进行转发,从而实现动态路由的功能。

  • 相关阅读:
    luffy后台登录+注册+课程
    luffy前台登录+注册+课程
    luffy前台准备
    luffy后台准备
    跨域请求
    pip源和虚拟环境的搭建
    Book接口
    drf-Xadmin的使用
    drf-JWT认证
    drf-自动生成接口文档
  • 原文地址:https://www.cnblogs.com/nineberg/p/13460115.html
Copyright © 2011-2022 走看看