什么是Zull

Zuul就是一个网关,实现的功能:代理、路由、过滤这三大功能

举个例子,一个大型商场,eureka是大型商场,服务是里面的商店,Zuul就是商场的保安。所以Zuul是需要注册进eureka的,没商场保安

为什么需要Zuul

这个你想想为什么商场需要保安就明白了....

下面是官方的回答,你看看就得了,没必要记

  • 身份验证和安全性 - 确定每个资源的身份验证要求并拒绝不满足这些要求的请求。
  • 洞察和监控 - 在边缘跟踪有意义的数据和统计数据,以便为我们提供准确的生产视图。
  • 动态路由 - 根据需要动态地将请求路由到不同的后端群集。
  • 压力测试 - 逐渐增加群集的流量以衡量性能。
  • Load Shedding - 为每种类型的请求分配容量并删除超过限制的请求。
  • 静态响应处理 - 直接在边缘构建一些响应,而不是将它们转发到内部集群
  • 多区域弹性 - 跨AWS区域路由请求,以使我们的ELB使用多样化,并使我们的优势更接近我们的成员

新建Zuul项目

新建项目zuul-gateway-9527,给主方法加上@EnableZuulProxy注解

yml文件如下:

server:
port: 9527 spring:
application:
name: microservicecloud-zuul-gateway eureka:
client:
service-url:
defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka,http://eureka7003.com:7003/eureka
instance:
instance-id: gateway-9527.com
prefer-ip-address: true info:
app.name: atguigu-microcloud
company.name: www.atguigu.com
build.artifactId: $project.artifactId$
build.version: $project.version$

Maven的pom文件

<!-- zuul路由网关 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zuul</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<!-- actuator监控 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

其实重要的是spring-cloud-starter-zuul这个

我们在hosts文件中添加一个Zuul的映射,模拟我们有服务器的样子

127.0.0.1 myzuul.com

这样我们就直接访问myzuul.com加端口号访问Zuul,假装我们有服务器的样子。

运行Zuul

启动eureka集群,启动一个provider服务,启动Zuul,浏览器输入

http://localhost:8001/dept/get/1,这当然是可以访问的。

现在浏览器输入Zuul的地址加服务名称加接口,这样我们就实现了通过Zuul进行访问服务,浏览器输入http://myzuul.com:9527/microservicecloud-dept/dept/get/1

可以看到,也是可以访问的。

Zuul的基本配置

上面我们运行了Zuul,通过Zuul访问服务成功,现在来配置一下Zuul,这个保安不能只站着,啥也不做吧,保安起码还得会巡逻,擒拿,疏散人群,突发应急等技能

忽略微服务的真实名称

在yml文件加如下内容

zuul:
# ignored-services: microservicecloud-dept
prefix: /Vae
ignored-services: "*"
routes:
mydept.serviceId: microservicecloud-dept
mydept.path: /mydept/**

这个是忽略微服务的真实名称,下面是忽略一个微服务

ignored-services: microservicecloud-dept

下面这个是忽略所有的微服务

ignored-services: "*"

这个是忽略真实名称后的替代名称

mydept.path: /mydept/**

其实,我不知道为什么要忽略真实的服务名,而使用一个替代名。

设置统一公共前缀

还是上面的,就是这个

prefix: /Vae

这个是为了方便的归类吧,这个时候在访问Zuul的时候,服务名前就要加上Vae了

总结

Zuul就是一个网关,保安,其实我们这学的只有忽略服务真实名称和设置统一前缀而已,Zuul的功能应该不仅于此。更多的用到再学吧。

防盗链接:本博客由蜀云泉发表

SpringCloud笔记七:Zuul的更多相关文章

  1. 《MFC游戏开发》笔记七 游戏特效的实现(一):背景滚动

    本系列文章由七十一雾央编写,转载请注明出处. http://blog.csdn.net/u011371356/article/details/9344721 作者:七十一雾央 新浪微博:http:// ...

  2. (转)Qt Model/View 学习笔记 (七)——Delegate类

    Qt Model/View 学习笔记 (七) Delegate  类 概念 与MVC模式不同,model/view结构没有用于与用户交互的完全独立的组件.一般来讲, view负责把数据展示 给用户,也 ...

  3. SpringCloud学习之zuul

    一.为什么要有网关 我们先看一个图,如果按照consumer and server(最初的调用方式),如下所示 这样我们要面临如下问题: 1. 用户面临着一对N的问题既用户必须知道每个服务.随着服务的 ...

  4. Learning ROS for Robotics Programming Second Edition学习笔记(七) indigo PCL xtion pro live

    中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS forRobotics Pro ...

  5. Elasticsearch笔记七之setting,mapping,分片查询方式

    Elasticsearch笔记七之setting,mapping,分片查询方式 setting 通过setting可以更改es配置可以用来修改副本数和分片数. 1:查看,通过curl或浏览器可以看到副 ...

  6. Typescript 学习笔记七:泛型

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  7. python3.4学习笔记(七) 学习网站博客推荐

    python3.4学习笔记(七) 学习网站博客推荐 深入 Python 3http://sebug.net/paper/books/dive-into-python3/<深入 Python 3& ...

  8. Go语言学习笔记七: 函数

    Go语言学习笔记七: 函数 Go语言有函数还有方法,神奇不.这有点像python了. 函数定义 func function_name( [parameter list] ) [return_types ...

  9. springcloud 实战 网关zuul使用中遇到的相关问题

    springcloud 实战  网关zuul使用中遇到的相关问题 1.网关zuul使用时,跨域问题在网关中配置pre过滤器: response.setHeader("Access-Contr ...

随机推荐

  1. 深入理解group by 语句的执行顺序 from→where→group by→select(含聚合函数)

    由于之前没有对group by 语句的执行顺序(执行原理)做深入的了解,所以导致在实际应用过程中出现了一些问题.举个简单的粟子,比如一个表testA中的所有数据如下图: 我现在想从testA中查询us ...

  2. struct导入项目工程时工程旁边出现红色的×号

    在我们学习java的过程中难免要导入java工程项目,那么当我们导进去的时候出现错误怎么办呢, 一,首先 二,其次 选择Properties 三,再选择 四,再选择 (高版本的选择1.5尽量用1.6的 ...

  3. Docker: Jenkins里的pipeline编写基本技巧

    Jenkins里,先新建一个pipeline项目 Pipeline Syntax 在Sample Step里选择需要的插件,如果不存在,就去系统管理,插件管理里,进行安装. 如果源码管理工具用的是gi ...

  4. OpenGL实例:几何变换

    OpenGL实例:几何变换 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 更多请查看:计算机图形学 1. 平移 #include <GL/glu ...

  5. 彻底搞懂spark的shuffle过程(shuffle write)

    什么时候需要 shuffle writer 假如我们有个 spark job 依赖关系如下 我们抽象出来其中的rdd和依赖关系: E <-------n------,              ...

  6. .NET Core 图片操作在 Linux/Docker 下的坑

    一.前言 .NET Core 目前更新到2.2了,但是直到现在在 .NET Core 本身依然不包括和图片有关的 Image.Bitmap 等类型.对于图片的操作在我们开发中很常见,比如:生成验证码. ...

  7. C语言中printf,scanf,puts,%%等输出格式

    #include<stdio.h> int main(void){    int a;    printf("请输入一个整数,程序求取他的最后一位数字:");    s ...

  8. JS 设计模式七 -- 模板方法模式

    概念 模板方法模式是一直昂只需使用继承就可以实现的非常简单的模式. 模板方法模式由两部分结构组成,第一部分是抽象父类,第二部分是具体实现的子类. 实现 模板方法模式一般的实现方式为继承. // 体育运 ...

  9. Linux如何在一个文件中写入内容

    Linux中,在一个文件中写入内容,可以vim打开编辑模式,输入我们想要的内容,此次我们使用echo命令 来在一个文件夹中写入内容. echo命令: 第一种: echo 'i love u' > ...

  10. Riccati方程(微分方程)

    形如:$$\frac{dy}{dx}=P(x)y^{2}+Q(x)y+R(x)$$ 其中P(x).Q(x).R(x)是连续可微函数 或形如 $$\frac{dy}{dx}=ay^{2}+\frac{k ...