一、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. 《 .NET并发编程实战》扩展阅读 - 元胞自动机 - 1 - 为什么要学元胞自动机

    先发表生成URL以印在书里面.等书籍正式出版销售后会公开内容.

  2. c#编码注释

    1      目录 2       前言... 3 2.1        编写目的... 3 2.2        适用范围... 4 3       命名规范... 4 3.1        命名约 ...

  3. PIE调用Python获得彩色直方图

    前段时间我一直在研究PIE SDK与Python的结合,因为在我的开发中,我想获取一张图片的统计直方图,虽然在SDK中有提供关于直方图的类接口(如IStatsHistogram 接口.Histogra ...

  4. .NET 跨域问题解决

    后端处理:var callback=context.Request.QueryString["callback"].ToString(); context.Response.Wri ...

  5. Winform中设置ZedGraph多条Y轴时坐标轴左右显示设置

    场景 Winform中实现ZedGraph的多条Y轴(附源码下载): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/1001322 ...

  6. 千万级MySQL数据库建立索引,提高性能的秘诀

    实践中如何优化MySQL 实践中,MySQL的优化主要涉及SQL语句及索引的优化.数据表结构的优化.系统配置的优化和硬件的优化四个方面,如下图所示: SQL语句及索引的优化 SQL语句的优化 SQL语 ...

  7. JavaScript调用百度地图

    在网站开发过程中,经常会调用到地图,百度地图提供Web开发.Android开发.iOS开发API及SDK,百度地图JavaScript API可帮助您在网站中构建功能丰富.交互性强的地图应用,本篇博客 ...

  8. 把本地项目提交到GIT上

    1.init之前 1.1 新建.gitignore文件 在提交之前.gitignore文件会把文件里面包含的内容都忽略掉 node_modules // webstorm里面的配置,别人不一定用 .i ...

  9. E203 译码模块(1)

    E203是两级流水线结构,第一级是IFU进行取指操作,第二级包括译码.执行.交付和写回等功能.架构图如下: https://www.cnblogs.com/images/cnblogs_com/mik ...

  10. SQL中的连接(极客时间)

    SQL中的连接 关系型数据库的核心之一就是连接, 而在不同的标准中, 连接的写法上可能有区别, 最为主要的两个SQL标准就是SQL92和SQL99了, 后面的数字表示的是标准提出的时间. SQL92中 ...