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=
SpringCloud入门(七): Zuul 简介与使用的更多相关文章
- springcloud 入门 7 (zuul路由网关)
Zuul简介: Zuul的主要功能是路由转发和过滤器.路由功能是微服务的一部分,比如/api/user转发到到user服务,/api/shop转发到到shop服务.zuul默认和Ribbon结合实现了 ...
- SpringCloud(2)---SpringCloud入门篇
SpringCloud理解篇 一.微服务概述 1.什么是微服务 目前的微服务并没有一个统一的标准,一般是以业务来划分将传统的一站式应用,拆分成一个个的服务,彻底去耦合,一个微服务就是单功能业务,只做一 ...
- SpringCloud入门之常用的配置文件 application.yml和 bootstrap.yml区别
作者其他技术文章 1) Spring Boot 简介 2)SpringCloud入门之YAML格式文件规范学习 3)SpringCloud入门之Spring Boot多环境配置切换指南 4) Elas ...
- SpringCloud入门(一)
一.微服务概述 1.什么是微服务 目前的微服务并没有一个统一的标准,一般是以业务来划分将传统的一站式应用,拆分成一个个的服务,彻底去耦合,一个微服务就是单功能业务,只做一件事. 与微服务相对的叫巨石 ...
- SpringCloud入门之应用程序上下文服务(Spring Cloud Context)详解
构建分布式系统非常复杂且容易出错.Spring Cloud为最常见的分布式系统模式提供了简单易用的编程模型,帮助开发人员构建弹性,可靠和协调的应用程序.Spring Cloud构建于Spring Bo ...
- SpringCloud之网关 Zuul(四)
一 Zuul简介 zuul 是netflix开源的一个API Gateway 服务器, 本质上是一个web servlet应用. Zuul 在云平台上提供动态路由,监控,弹性,安全等边缘服务的框架.Z ...
- Spring Cloud 入门 之 Zuul 篇(五)
原文地址:Spring Cloud 入门 之 Zuul 篇(五) 博客地址:http://www.extlight.com 一.前言 随着业务的扩展,微服务会不对增加,相应的其对外开放的 API 接口 ...
- SpringCloud入门概述
SpringCloud入门概述 Spring的三大模块:SpringBoot(构建),Spring Cloud(协调),Spring Cloud Data Flow(连接)注意:Spring Boot ...
- SQL Server复制入门(一)----复制简介【转】
SQL Server复制入门(一)----复制简介 简介 SQL Server中的复制(Replication)是SQL Server高可用性的核心功能之一,在我看来,复制指的并不仅仅是一项技术,而是 ...
随机推荐
- Kali系统中20个超好用黑客渗透工具,你知道几个?
1. Aircrack-ng Aircrack-ng是用来破解WEP/WAP/WPA 2无线密码最佳的黑客工具之一! 它通过接收网络的数据包来工作,并通过恢复的密码进行分析.它还拥有一个控制台接口.除 ...
- 在WPF(core版本)中引用外部字体不可用问题说明
这几天使用WPF写软件,想引用外部字体,于是下载了字体文件: 然后在App.xaml中添加了如下代码: <FontFamily x:Key="Digital-7 Mono"& ...
- 一文看懂js中元素的滚动大小(scrollWidth,scrollHeight,scrollTop,scrollLeft)
滚动大小(scroll dimension) 滚动大小指的是包含滚动内容元素的大小. 以下是与元素滚动内容大小相关的属性: 1. scrollWidth:在没有滚动条的情况下,元素内容的总宽度. 2. ...
- 统计 Django 项目的测试覆盖率
作者:HelloGitHub-追梦人物 文中所涉及的示例代码,已同步更新到 HelloGitHub-Team 仓库 我们完成了对 blog 应用和 comment 应用这两个核心 app 的测试.现在 ...
- Java并发ReentrantLock
ReentrantLock简介 可重入锁,作用是使线程安全.对比于sychronized,它能具有以下特点 减小资源锁的力度 更可控,减少发生死锁的概率 加锁.释放锁都是显示控制的 添加锁的作用时间来 ...
- Python中的BeautifulSoup库简要总结
一.基本元素 BeautifulSoup库是解析.遍历.维护“标签树”的功能库. 引用 from bs4 import BeautifulSoup import bs4 html文档-标签树-Beau ...
- vue-cli “从入门到放弃”
主要作用:目录结构.本地调试.代码部署.热加载.单元测试 在如今前端技术飞速发展的时代,angular.js.vue.js 和 react.js 作为前端框架已经呈现出了三国鼎立的局面.作为国人若你不 ...
- Head First设计模式——生成器和责任链模式
生成器 生成器模式:封装一个产品的构造过程,并允许按步骤构造. 现又一个度假计划指定,需要指定度假每一天的活动.旅馆.用餐.门票等等事情,但是每个客人的度假计划可能不太一样.例如天数.活动类型.用餐等 ...
- 配置XNA以适用VS2017进行开发
Win10似乎已不再支持使用XNA进行游戏开发,安装XNA Game Studio经常会出现错误,显示不兼容,即使安装VS2010也不行.下面给出方法,可以使用VS2017配合XNA进行游戏开发. 1 ...
- C++ 小练习,一个整型数字的处理
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> //输入一个任意位数的int整数,并判断该整数的位数,并输出每一位数(每个数字中间用空 ...