• SpringCloud入门(七): Zuul 简介与使用


    Zuul 简介

      Zuul 微服务网关是为Spring Cloud Netflix提供动态路由,监控,弹性,安全等服务的框架。可以和Eureka、Ribbon、Hystrix等组件配合使用。

    Zuul 主要功能

      1、 身份认证与安全:识别每个资源的验证要求,并拒绝那些与要求不符的请求。

      2、审查与监控:在边缘位置追踪有意义的数据和统计结果,从而为我们带来精确的生产视图。

      3、动态路由:动态地将请求路由到不同的后端集群;

      4、压力测试:逐渐增加指向集群的流量,以了解性能;

      5、为每一种负载类型分配对应容量,并弃用超出限定值的请求;

    Zuul 带了什么优势

      没有使用网关服务的时候:

      1、客户端会多次请求不同的微服务,增加了客户端的复杂性。

      2、存在跨域请求,在一定场景下处理相对复杂。

      3、认证复杂,每个服务都需要独立认证。

      使用服务网关后:

      1、易于监控,可在微服务网关收集监控数据并将其推送到外部系统进行分析。

      2、易于认证,可在微服务网关上进行认证,然后再将请求转发到后端的微服务,而无须在每个微服务中进行认证。

      3、减少了客户端与各个微服务之间的交互次数。

    Zuul的高可用

    zuul的高可用分为两种,一种是将zuul的客户端与服务端同时注册到了Eureka上,不过现实中这种场景并不多见。

     

    zuul的第二种高可用,客户端不注册到Eureka上,客户端通过Nginx等进行负载均衡。 

     

     Zuul 入门

    <!--1. 配置pom文件,引入spring-cloud-starter-netflix-zuul包-->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
    </dependency>
    
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>
    
    <!-- 2. 配置属性文件-->
    server.port=9004
    #注册到eureka服务端的微服务名称
    spring.application.name=ms-gateway-zuul
    #注册到eureka服务端的地址
    eureka.client.service-url.defaultZone=http://localhost:9000/eureka/
    #点击具体的微服务,右下角是否显示ip
    eureka.instance.prefer-ip-address=true
    #显示微服务的名称
    eureka.instance.instance-id=ms-gateway-zuul-9004
    
    <!-- 3. 在Spring的启动入口添加@EnableZuulProxy注解 -->
    @SpringBootApplication
    @EnableZuulProxy
    public class ZuulApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(ZuulApplication.class, args);
        }
    }

    通过Url访问:http://localhost:9004/zuul/ms-consumer-user/userController/getUserInfo/{loginName}

    Zuul 的常规配置

    1、设置访问路径,默认值为zuul 

      zuul.servlet-path=/zuul

    2、关闭通过微服务名称路访问(避免暴露服务名称)

      全部设置:zuul.ignored-services=*  

      分服务设置:zuul.ignored-services=ms-provider-order,ms-consumer-user

    3、通过服务实例指定映射路径

      zuul.routes.ms-provider-order=/order-service/**

      访问:http://localhost:9004/zuul/order-service/userController/getUserInfo/{loginName}

    4、通过服务的serviceId指定映射路径

      zuul.routes.use-routing.serviceId=ms-provider-order

      zuul.routes.use-routing.path=/order-service/**

    5、通过url指定映射路径(路由不会作为HystrixCommand执行,同时也不能使用Ribbon来负载均衡多个URL)

      zuul.routes.use-routing.url=http://localhost:8004/

      zuul.routes.use-routing.path=/order-service/**

    6、统一设置路由前缀

      全局设置:zuul.prefix=/order-api

           zuul.strip-prefix=true(是否剥离前缀,默认是true)

           zuul.routes.use-routing.serviceId=ms-provider-order

           zuul.routes.use-routing.path=/order-service/**

           访问:http://localhost:9004/order-api/order-service/userController/getUserInfo/{loginName}

      分服务设置:zuul.strip-prefix=true

            zuul.routes.use-routing.serviceId=ms-provider-order

            zuul.routes.use-routing.path=/order-service/**

            zuul.routes.use-routing.stripPrefix=true

            访问:http://localhost:9004/zuul/order-service/userController/getUserInfo/{loginName}

    7、过滤敏感路径

      zuul.ignored-patterns=/**/admin/**

    8、过滤敏感头信息(通过zuul网关的时候,会过滤掉敏感的头信息,比如cookie等其他的)

      全局设置:zuul.sensitive-headers=

      分模块设置:zuul.routes.use-routing.serviceId=ms-provider-order

            zuul.routes.use-routing.path=/order-service/**

            zuul.routes.use-routing.sensitiveHeaders=

  • 相关阅读:
    webapp之路--meta标签format-detection、apple-mobile-web-app-capable
    js 进行年月日时间差计算
    JS手机邮箱身份证号码的正则验证以及通过身份证号码获取出生年月日
    react setState()方法可以只修改一个对象的部分属性
    js获取当前时间格式YYYY/MM/DD
    提高CSS开发能力的技巧集
    JavaScript专业规则12条
    为什么大型网站前端使用PHP后台逻辑用Java
    Cookie与Session的区别
    2016年JavaScript技术栈展望
  • 原文地址:https://www.cnblogs.com/jiangyaxiong1990/p/12404292.html
Copyright © 2020-2023  润新知