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. <!--1. 配置pom文件,引入spring-cloud-starter-netflix-zuul包-->
  2. <dependency>
  3. <groupId>org.springframework.cloud</groupId>
  4. <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
  5. </dependency>
  6.  
  7. <dependency>
  8. <groupId>org.springframework.cloud</groupId>
  9. <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
  10. </dependency>
  11.  
  12. <!-- 2. 配置属性文件-->
  13. server.port=9004
  14. #注册到eureka服务端的微服务名称
  15. spring.application.name=ms-gateway-zuul
  16. #注册到eureka服务端的地址
  17. eureka.client.service-url.defaultZone=http://localhost:9000/eureka/
  18. #点击具体的微服务,右下角是否显示ip
  19. eureka.instance.prefer-ip-address=true
  20. #显示微服务的名称
  21. eureka.instance.instance-id=ms-gateway-zuul-9004
  22.  
  23. <!-- 3. 在Spring的启动入口添加@EnableZuulProxy注解 -->
  24. @SpringBootApplication
  25. @EnableZuulProxy
  26. public class ZuulApplication {
  27.  
  28. public static void main(String[] args) {
  29. SpringApplication.run(ZuulApplication.class, args);
  30. }
  31. }

通过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=

SpringCloud入门(七): Zuul 简介与使用的更多相关文章

  1. springcloud 入门 7 (zuul路由网关)

    Zuul简介: Zuul的主要功能是路由转发和过滤器.路由功能是微服务的一部分,比如/api/user转发到到user服务,/api/shop转发到到shop服务.zuul默认和Ribbon结合实现了 ...

  2. SpringCloud(2)---SpringCloud入门篇

    SpringCloud理解篇 一.微服务概述 1.什么是微服务 目前的微服务并没有一个统一的标准,一般是以业务来划分将传统的一站式应用,拆分成一个个的服务,彻底去耦合,一个微服务就是单功能业务,只做一 ...

  3. SpringCloud入门之常用的配置文件 application.yml和 bootstrap.yml区别

    作者其他技术文章 1) Spring Boot 简介 2)SpringCloud入门之YAML格式文件规范学习 3)SpringCloud入门之Spring Boot多环境配置切换指南 4) Elas ...

  4. SpringCloud入门(一)

    一.微服务概述 1.什么是微服务 目前的微服务并没有一个统一的标准,一般是以业务来划分将传统的一站式应用,拆分成一个个的服务,彻底去耦合,一个微服务就是单功能业务,只做一件事. 与微服务相对的叫巨石 ...

  5. SpringCloud入门之应用程序上下文服务(Spring Cloud Context)详解

    构建分布式系统非常复杂且容易出错.Spring Cloud为最常见的分布式系统模式提供了简单易用的编程模型,帮助开发人员构建弹性,可靠和协调的应用程序.Spring Cloud构建于Spring Bo ...

  6. SpringCloud之网关 Zuul(四)

    一 Zuul简介 zuul 是netflix开源的一个API Gateway 服务器, 本质上是一个web servlet应用. Zuul 在云平台上提供动态路由,监控,弹性,安全等边缘服务的框架.Z ...

  7. Spring Cloud 入门 之 Zuul 篇(五)

    原文地址:Spring Cloud 入门 之 Zuul 篇(五) 博客地址:http://www.extlight.com 一.前言 随着业务的扩展,微服务会不对增加,相应的其对外开放的 API 接口 ...

  8. SpringCloud入门概述

    SpringCloud入门概述 Spring的三大模块:SpringBoot(构建),Spring Cloud(协调),Spring Cloud Data Flow(连接)注意:Spring Boot ...

  9. SQL Server复制入门(一)----复制简介【转】

    SQL Server复制入门(一)----复制简介 简介 SQL Server中的复制(Replication)是SQL Server高可用性的核心功能之一,在我看来,复制指的并不仅仅是一项技术,而是 ...

随机推荐

  1. linux安装国产数据库(金仓数据库,达梦数据库,南大通用数据库)

    今天在公司做的任务是,在Linux的环境下安装三种数据库,结果一种数据库也没有安装好,首先遇到的问题是安装南大通用数据库遇到安装的第五步,就出现问题了,问题是Gbase SDK没有安装成功,以及Gba ...

  2. 搭建Flutter开发环境需要注意的几个小Tips

    目录 下载SDK 安装 Android Stdio + SDK + tool SDK + 创建模拟器 + 插件(flutter和dart) Xcode + cocoapods VSCode + Flu ...

  3. .Net 特性分析与妙用

    一.特性是什么 1.想象很多小伙伴们都看过在一个类上方.或者在控制器见过类似的东东,加上之后就可以标识这个类或者方法就具备了某些特点 ,那我们就进入它的内心一探究竟吧. 2.我们进入某个特性之后,可以 ...

  4. Spring MVC系列-(1) Spring概述

    1. Spring概述 本章主要介绍Spring中的体系结构和常见概念,比如bean.控制反转(Inverse of Control,IoC)等. 1.1 体系结构 Spring 框架提供约 20 个 ...

  5. JavaScript对象(三)

    序列化对象: 对象序列化:对象的状态转化为字符串,也可以将字符串还原为对象.方法:JSON.stringify(),用来序列化,JSON.parse(),用来还原对象. JSON(JavaScript ...

  6. 10个机器学习人工智能开发框架和AI库(优缺点对比表)/贪心学院

    概述 通过本文我们来一起看一些用于人工智能的高质量AI库,它们的优点和缺点,以及它们的一些特点. 人工智能(AI)已经存在很长时间了.然而,由于这一领域的巨大进步,近年来它已成为一个流行语.人工智能曾 ...

  7. rest framework serializer

    串行器 扩大串行的用处是什么,我们想地址.然而,这不是一个简单的问题,它会采取一些严重的设计工作. -罗素基思-马吉,Django的用户组 串行器允许诸如查询集和模型实例复杂的数据转换为原生的Pyth ...

  8. js实践篇:例外处理Try{}catch(e){}

    本文转载至:http://blog.csdn.net/ocean20/article/details/7301008 程序开发中,编程人员经常要面对的是如何编写代码来响应错误事件的发生,即例外处理(e ...

  9. 如何查看子线程中的GC Alloc

    1)如何查看子线程中的GC Alloc2)Build时,提示安卓NDK异常3)如何获得ParticleSystem产生的三角形数量4)关于图片通道的问题5)GPUSkinning导致模型动画不平滑 M ...

  10. Linux 中useradd命令的使用

    Linux 系统中通常都是root用户具有超级权限,超级用户root一般是不需要创建的,然而很多时候root用户不是任何人都可以使用的,毕竟最高权限的用户,任意使用的话,会对系统造成很多不必要的破坏. ...