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=

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. Kali系统中20个超好用黑客渗透工具,你知道几个?

    1. Aircrack-ng Aircrack-ng是用来破解WEP/WAP/WPA 2无线密码最佳的黑客工具之一! 它通过接收网络的数据包来工作,并通过恢复的密码进行分析.它还拥有一个控制台接口.除 ...

  2. 在WPF(core版本)中引用外部字体不可用问题说明

    这几天使用WPF写软件,想引用外部字体,于是下载了字体文件: 然后在App.xaml中添加了如下代码: <FontFamily x:Key="Digital-7 Mono"& ...

  3. 一文看懂js中元素的滚动大小(scrollWidth,scrollHeight,scrollTop,scrollLeft)

    滚动大小(scroll dimension) 滚动大小指的是包含滚动内容元素的大小. 以下是与元素滚动内容大小相关的属性: 1. scrollWidth:在没有滚动条的情况下,元素内容的总宽度. 2. ...

  4. 统计 Django 项目的测试覆盖率

    作者:HelloGitHub-追梦人物 文中所涉及的示例代码,已同步更新到 HelloGitHub-Team 仓库 我们完成了对 blog 应用和 comment 应用这两个核心 app 的测试.现在 ...

  5. Java并发ReentrantLock

    ReentrantLock简介 可重入锁,作用是使线程安全.对比于sychronized,它能具有以下特点 减小资源锁的力度 更可控,减少发生死锁的概率 加锁.释放锁都是显示控制的 添加锁的作用时间来 ...

  6. Python中的BeautifulSoup库简要总结

    一.基本元素 BeautifulSoup库是解析.遍历.维护“标签树”的功能库. 引用 from bs4 import BeautifulSoup import bs4 html文档-标签树-Beau ...

  7. vue-cli “从入门到放弃”

    主要作用:目录结构.本地调试.代码部署.热加载.单元测试 在如今前端技术飞速发展的时代,angular.js.vue.js 和 react.js 作为前端框架已经呈现出了三国鼎立的局面.作为国人若你不 ...

  8. Head First设计模式——生成器和责任链模式

    生成器 生成器模式:封装一个产品的构造过程,并允许按步骤构造. 现又一个度假计划指定,需要指定度假每一天的活动.旅馆.用餐.门票等等事情,但是每个客人的度假计划可能不太一样.例如天数.活动类型.用餐等 ...

  9. 配置XNA以适用VS2017进行开发

    Win10似乎已不再支持使用XNA进行游戏开发,安装XNA Game Studio经常会出现错误,显示不兼容,即使安装VS2010也不行.下面给出方法,可以使用VS2017配合XNA进行游戏开发. 1 ...

  10. C++ 小练习,一个整型数字的处理

    #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> //输入一个任意位数的int整数,并判断该整数的位数,并输出每一位数(每个数字中间用空 ...