一、Zuul的介绍

Zuul包含了对请求的路由过滤两个最主要的功能:

其中路由功能负责将外部请求转发到具体的微服务实力上,是实现外部访问统一入口基础而过滤器功能则负责对请求的处理过程进行干预,是实现请求校验、服务聚合等功能的基础。

  Zuul和eureka进行整合,将Zuul自身注册到Eureka服务治理下的应用,同时从Eureka中获得其他微服务的消息,也即以后的访问微服务都是通过Zuul跳转后获得的。

注意:Zuul最终还是会注册到Eureka。

提供=代理+路由+过滤三大功能

二、路由的基本配置

1、新建工程:microservicecloud-zuul-gateway-9527

2、pom.xml文件添加依赖的jar

     <dependencies>
<!-- 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>
<!-- hystrix容错 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-hystrix</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<!-- 日常标配 -->
<dependency>
<groupId>com.atguigu.springcloud</groupId>
<artifactId>microservicecloud-api</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jetty</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<!-- 热部署插件 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>springloaded</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
</dependencies>

3、yml文件的配置

server:
port: 9527 spring:
application:
name: microservicecloud-zuul-gateway # zuul注册到Eureka
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: yufeng-microcloud
company.name: www.yufeng.com
build.artifactId: $project.artifactId$
build.version: $project.version$

4、hosts的修改

(1)打开 C:\Windows\System32\drivers\etc\hosts 文件;

(2)增加:127.0.0.1 myzuul.com

5、主启动类,添加@EnableZuulProxy

@SpringBootApplication
@EnableZuulProxy
public class Zuul_9527_StartSpringCloudApp
{
public static void main(String[] args)
{
SpringApplication.run(Zuul_9527_StartSpringCloudApp.class);
}
}

6、测试

(1)启动三个eureka集群, 一个microservicecloud-provider-dept-8001,启动路由网关微服务;

(2)不用路由和启动路由的结果一样;

不用路由:http://localhost:8001/dept/get/2

启用路由:http://myzuul.com:9527/microservicecloud-dept/dept/get/2

三、路由访问映射规则

以上使用 http://myzuul.com:9527/microservicecloud-dept/dept/get/2 访问,则暴露出了调用的微服务名为 microservicecloud-dept;为了不暴露出微服务的真正名称,使用路由访问映射;

1、在yml文件中增加路由映射

# 路由映射
zuul:
routes:
mydept:
serviceId: microservicecloud
-dept
path: /mydept/**

serviceId:映射的服务名;path:映射成为的路径;

在yml修改之前使用:http://myzuul.com:9527/microservicecloud-dept/dept/get/2  访问;

在yml修改之后使用:http://myzuul.com:9527/mydept/dept/get/2  访问;

2、此时使用 http://myzuul.com:9527/microservicecloud-dept/dept/get/2  和 http://myzuul.com:9527/mydept/dept/get/2  都可以成功的调用该接口,还是会暴露调用的微服务名为microservicecloud-dept;所以需要去让使用 http://myzuul.com:9527/microservicecloud-dept/dept/get/2  链接不能够访问;

(1)因此,需要在yml文件中增加原服务的忽略:

# 路由映射
zuul:
ignored-services: microservicecloud-dept
routes:
mydept:
serviceId: microservicecloud-dept
path: /mydept/**

ignored-services:特别注意此处的配置。通过配置此选项,限制不能通过访问服务名去访问微服务

如果想把其他很多的微服务都通过配置忽略掉真实访问路径则直接使用 ”*” 来代替。

(2)重启微服务

<1> 使用原路径访问报错,http://myzuul.com:9527/microservicecloud-dept/dept/get/2

<2> 使用路由映射路径可以正常访问:http://myzuul.com:9527/mydept/dept/get/2

(3)在实际的使用时候,有很多个服务器需要限制不能通过服务名去访问;则在yml做如下的修改:

# 路由映射
zuul:
ignored-services: "*"
routes:
mydept:
serviceId: microservicecloud-dept
path: /mydept/**

测试结果与上面的结果一样;

3、设置统一公共前缀

(1)修改yml文件,如下所示

# 路由映射
zuul:
prefix: /yufeng
ignored-services: "*"
routes:
mydept:
serviceId: microservicecloud-dept
path: /mydept/**

(2)测试

<1> 在浏览器中打开:http://myzuul.com:9527/mydept/dept/get/2,报错如下:

<2> 在浏览器中打开:http://myzuul.com:9527/yufeng/mydept/dept/get/2,可以正常访问;

Zuul的使用,路由访问映射规则的更多相关文章

  1. SpringCloud Zuul 路由映射规则配置

    阅读目录 前言 快速入门 路由详解 Cookie与头信息 本地跳转 Hystrix和Ribbon支持 过滤器解释 动态加载 后记 回到目录 前言 本文起笔于2018-06-26周二,接了一个这周要完成 ...

  2. SpringCloud系列八:Zuul 路由访问(Zuul 的基本使用、Zuul 路由功能、zuul 过滤访问、Zuul 服务降级)

    1.概念:Zuul 路由访问 2.具体内容 在现在为止所有的微服务都是通过 Eureka 找到的,但是在很多的开发之中为了规范微服务的使用,提供有一个路由的处理控制组件:Zuul,也就是说 Zuul ...

  3. SpringCloud:扩展zuul配置路由访问

    继续上次整合SpringCloud的demo进行扩展zuul:https://www.cnblogs.com/nhdlb/p/12555968.html  这里我把zuul划分出一个模块单独启动 创建 ...

  4. SpringCloud之初识Zuul(网关)---动态路由,权限验证

    通过前面的学习,使用Spring Cloud实现微服务的架构基本成型,大致是这样的: 我们使用Spring Cloud Netflix中的Eureka实现了服务注册中心以及服务注册与发现:而服务间通过 ...

  5. Spring Cloud (十三) Zuul:静态路由、静态过滤器与动态路由的实现

    前言 本文起笔于2018-06-26周二,接了一个这周要完成的开发任务,需要先等其他人的接口,可能更新的会慢一些,还望大家见谅.这篇博客我们主要讲Spring Cloud Zuul.项目地址:我的gi ...

  6. Spring Cloud 网关服务 zuul 三 动态路由

    zuul动态路由 网关服务是流量的唯一入口.不能随便停服务.所以动态路由就显得尤为必要. 数据库动态路由基于事件刷新机制热修改zuul的路由属性. DiscoveryClientRouteLocato ...

  7. Springboot学习02-webjars和静态资源映射规则

    Springboot学习01-webjars和静态资源映射规则 前言 1-以前我们在IDEA中创建一个项目,添加web依赖包,我们现在是一个web应用,应该在man目录下面有一个webapp文件夹,将 ...

  8. Web API 路由访问设置

    前段时间一直致力于MVC webapi 技术的研究,中途也遇到过好多阻碍,特别是api路由的设置和URL的访问形式,所以针对这个问题,特意做出了记录,以供日后有同样困惑的大虾们借鉴: 在Mvc WEB ...

  9. @RequestMapping定义不同的处理器映射规则

    通过@RequestMapping注解可以定义不同的处理器映射规则. 1. URL路径映射 @RequestMapping(value="item")或@RequestMappin ...

随机推荐

  1. c#之添加window服务(定时任务)

    本文讲述使用window服务创建定时任务 1.如图,新建项目,windows桌面->windows服务 2.如图,右键,添加安装程序 3.在下图安装程序 serviceInstaller1 上右 ...

  2. Gitlab的CI/CD初尝试

    初衷:今天公司的前端和测试人员吵起来了.原因是测试埋怨前端人员把Bug的状态更改为已解决,结果代码根本没提交,而前端人员埋怨测试测的太频繁了,需要打几个环境的包不方便.又要改东西又要频繁打包费时间.凡 ...

  3. IOS开发实战-Xcode创建HelloWorld项目

    一.创建工程打开Xcode开发工具,在Welcome界面选择”Create a new Xcode project”选项 在选择模板窗口,选择”Single View Application” 确定模 ...

  4. 【spring】自定义注解 custom annotation

    自定义注解 custom annotation 使用场景 类属性自动赋值. 验证对象属性完整性. 代替配置文件功能,像spring基于注解的配置. 可以生成文档,像java代码注释中的@see,@pa ...

  5. android studio学习----gradle多渠道打包

    由于国内Android市场众多渠道,为了统计每个渠道的下载及其它数据统计,就需要我们针对每个渠道单独打包,如果让你打几十个市场的包岂不烦死了,不过有了Gradle,这再也不是事了. 友盟多渠道打包 废 ...

  6. unity常用的坐标系转换

    当调用别人的接口时,经常会有获取位置或向量的接口.遇到这些数据时,先要弄清楚现在获取的数据在哪个坐标系下的. 是否需要进行坐标系变换,一般提供的位置和向量都是在世界坐标系的,此时需要注意: ①对方的坐 ...

  7. 打开前端工程 Node Sass does not yet support your current environment: Windows 64-bit

    卸载当前sass版本,重新安装sass 打开cmd进入工程文件夹: 删除 npm uninstall --save node-sass 安装 npm install --save node-sass ...

  8. Linux 初识Libevent网络库

    初识Libevent libevent是用c写的高并发网络io库,只要有文件描述符,就都可使用libevent. libevent使用回调函数(callback) . 有了libevent,网络编程我 ...

  9. 两道DP,四年修一次路

    第十一届:山区修路 题目描述 SNJ位于HB省西部一片群峰耸立的高大山地,横亘于A江.B水之间,方圆数千平方公里,相传上古的神医在此搭架上山采药而得名.景区山峰均在海拔3000米以上,堪称" ...

  10. 201871010124-王生涛《面向对象程序设计(java)》第十五周学习总结

    项目 内容 这个作业属于哪个课程 <任课教师博客主页链接>https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 <作业链接地址>http ...