2019-12-11Java-111

微服务中的网关

    网关统一了服务之间的调用,协调了彼此之间的请求处理,服务网关 = 路由转发 + 过滤器

    详情参考:为什么微服务一定要有网关?

    网关的职责:

        统一入口

        鉴权校验

        动态路由

        解耦

网关的职责

一、网关服务入门案例

    1.新建项目,修改pom.xml文件,配置Zuul依赖

Zuul依赖

    2.修改application.properties/yml配置文件,配置应用名,端口,配置Eureka服务中心地址

application.properties/yml

    3.修改启动类,添加@EnableZuulProxy注解,开启Zuul网关代理服务

启动类

    4.启动测试,随便启动一个服务(在Eureka注册),然后启动网关服务,访问的时候就可以通过网关调用

        保证被访问的服务是启动状态

                http://网关ip:端口/访问服务应用名/服务暴露API

访问测试

二、网关路由中的路由规则

    1.URL指定规则:URL匹配关键字,如果包含关键字就跳转到指定的URL中

    2.服务指定规则:

    方式一、

        规则:

            zuul.routes.路径名.path=访问路径

            zuul.routes.路径名.serviceId=eureka的服务名

        方式二、

    规则:

            zuul.routes.服务应用名. path=访问路径(推荐)

    3.排除服务/多个服务规则:排除某几个服务

规则详情

        添加前缀的格式:zuul.prefix=前缀名

    常见的通配符标识的含义

        :标识在  …/服务名/匹配单个字符

        * :标识在  …/服务名/匹配多个字符,但无法匹配   ..服务名/../..

        * *:标识在  …/服务名/匹配多个字符,可以匹配     ..服务名/../..

通配符标识的含义

三、路由规则

        自定义过滤规则,实现简易的登录过滤器

    相同类型的过滤器,filterOrder方法的返回值越小,优先级越高

    1.创建项目,添加Zuul的依赖

依赖

    2.配置applicaiton.properties/yml全局配置文件,修改应用名,端口,注册中心服务地址等

applicaiton.properties/yml

    3.编写普通类继承ZuulFitler抽象类,并重写其方法,成为自定义过滤器,指定过滤规则、参数等信息

自定义过滤器

        ZuulFilter:是一个抽象类,继承该类并重写方法会自动变成一个zuul网关的过滤器。

常见的过滤器类型:

FilterType:在Zuul中默认定义了四种不同的过滤器类型,用字符串表示

        pre:可以在请求被路由之前调用

        routing:在路由执行之后被调用

        post:在routing和error过滤器之后被调用

        error:当处理请求发生错误时被调用

过滤器类型

    4,修改启动类,添加@EnableZuulProxy注解开启Zuul网关代理服务

项目结构

四、Zuul的请求生命周期

    当HttpRequest对象发起请求时,会先到Pre类型的过滤器中处理相关规则

        if(pre处理正常){

            到routing类型的过滤器中执行规则

            if(routing处理正常){

                    调用Provider中的服务

                    处理post过滤器

            }else{

                    到Error过滤器中处理异常

                    处理post过滤器

            }

    }else{

            到Error过滤器中处理异常

            处理post过滤器

    }

        个人理解,有不妥请自行:www.baidu.com


五、多网关过滤器的执行顺序和、采用网关过滤器对系统异常统一处理

    1.创建项目.....

    2.定义不同类型的网关过滤器,并在pre类型中抛出一个自定义异常

    AccessFilter过滤器

AccessFilter过滤器

    AccessFilter2过滤器

AccessFilter2过滤器

    ErrorFilter过滤器

ErrorFilter

    PostFilter过滤器

PostFilter过滤器

    3.Spring    Boot内置的Web容器启动后,一旦遇到异常会寻找路径为“/error”的异常处理地址

异常跳转路径

    4.我们可以自定义异常页面,从而进行统一异常处理

定义异常页面

    5.访问测试:控制台展示

控制台展示

    6.web展示页面

web展示页面

        可以根据需求不同编写不同的处理规则


你可能感兴趣的:(2019-12-11Java-111)