一、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. HTTP Error 502.5 - ANCM Out-Of-Process Asp.Net Core发布到IIS失败

    问题概述 asp.net core网站发布到windows server 2012r2 IIS后,出现这个报错.dotnet xx.dll命令网站能够正常运行.说明不是程序问题. 经过一番折腾终于部署 ...

  2. 2019-11-25-win10-uwp-发布旁加载自动更新

    原文:2019-11-25-win10-uwp-发布旁加载自动更新 title author date CreateTime categories win10 uwp 发布旁加载自动更新 lindex ...

  3. C# 灵活切换开发/测试/生成环境web.config

    web.config <configuration> <connectionStrings configSource="config\Sit.db.config" ...

  4. 关于Qt 静态成员函数调用信号

    class globalCalcThread; extern globalCalcThread *g_calcThread; class globalCalcThread : public QThre ...

  5. Webpack相关原理浅析

    基本打包机制 本质上,webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler).当 webpack 处理应用程序时,它会递归地构建一个依赖关系图(de ...

  6. 高性能TcpServer(C#) - 6.代码下载

    高性能TcpServer(C#) - 1.网络通信协议 高性能TcpServer(C#) - 2.创建高性能Socket服务器SocketAsyncEventArgs的实现(IOCP) 高性能TcpS ...

  7. ptrace函数深入分析

    ptrace函数:进程跟踪. 形式:#include<sys/ptrace.h> Int ptrace(int request,int pid,int addr,int data); 概述 ...

  8. 团队作业第3周——需求改进&系统设计(crtl冲锋队)

    2.需求&原型改进: 1.问题:游戏中我方飞机和敌方飞机是怎么控制的? 改进: 在游戏中,我控制我方飞机,按下方向键飞机便向按下的方向移动,按下Z键,我方飞机发射子弹. 敌方飞机面向随机的方向 ...

  9. [TCP/IP] ping traceroute和TTL

    1.Time To Live是生存时间的意思,就是说这个ping的数据包能在网络上存在多少时间.当我们对网络上的主机进行ping操作的时候,我们本地机器会发出一个数据包,数据包经过一定数量的路由器传送 ...

  10. linux下c语言实现多线程文件复制【转】

    转自:https://www.cnblogs.com/zxl0715/articles/5365989.html .具体思路 把一个文件分成N份,分别用N个线程copy, 每个线程只读取指定长度字节大 ...