1.Zuul简介

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

路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础。

过滤器功能则负责对请求的处理过程进行干预,是实现请求校验、服务聚合等功能的基础。

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

注:Zuul服务最终还是会注册进Eureka

Zuul提供代理、路由、过滤三大功能。

https://github.com/Netflix/zuul/wiki/Getting-Started

2.Zuul配置

(1).创建工程

新建Module模块microservicecloud-zuul-gateway-9527

(2).配置pom

[1].修改部分

<!-- 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>

[2].完整部分

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0"

         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

<parent>

<artifactId>microservicecloud</artifactId>

<groupId>com.hosystem</groupId>

<version>1.0-SNAPSHOT</version>

</parent>

<modelVersion>4.0.0</modelVersion>

<artifactId>microservicecloud-zuul-gateway-9527</artifactId>

<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>

</project>

(3).applicaiton.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: hosystem-microcloud

company.name: www.hosystem.com

build.artifactId: $project.artifactId$

build.version: $project.version$

(4).修改hosts

127.0.0.1  myzuul.com

(5).主启动类

创建主启动类Zuul_9527_StartSpringCloudApp,并添加注解@EnableZuulProxy.

package com.hosystem.springcloud;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.cloud.netflix.zuul.EnableZuulProxy;

@SpringBootApplication

@EnableZuulProxy

public class Zuul_9527_StartSpringCloudApp

{

public static void main(String[] args)

{

SpringApplication.run(Zuul_9527_StartSpringCloudApp.class, args);

}

}

(6).启动项目

[1].启动eureka7001、eureka7002、eureka7003

启动microservicecloud-eureka-7001、microservicecloud-eureka-7002、microservicecloud-eureka-7003

[2].启动provider8001

启动microservicecloud-provider-dept-8001

[3].启动zuul9527

启动microservicecloud-zuul-gateway-9527

(7).测试

[1].未启用路由

http://localhost:8001/dept/get/2

[2].启动路由

http://myzuul.com:9527/microservicecloud-dept/dept/get/2

3.Zuul路由访问映射规则

(1).修改application.yml

修改部分:

zuul:

  routes:

    mydept.serviceId: microservicecloud-dept

mydept.path: /mydept/**

完整部分:

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

zuul:

  routes:

    mydept.serviceId: microservicecloud-dept

mydept.path: /mydept/**

info:

  app.name: hosystem-microcloud

company.name: www.hosystem.com

build.artifactId: $project.artifactId$

build.version: $project.version$

访问效果

#之前访问的时候通过'microservicecloud-dept‘

http://myzuul.com:9527/microservicecloud-dept/dept/get/2

#之后访问的时候通过'mydept'

http://myzuul.com:9527/mydept/dept/get/1

出现的问题,通过'microservicecloud-dept‘或者'mydept'都可以访问。如何限制只允许'mydept'访问,而'microservicecloud-dept'访问失败呢?具体解决方法如下,

#解决单个的时候指定具体的servideId

#如果想要解决多个的时候可以使用   "*"

zuul:

  ignored-services: microservicecloud-dept

routes:

    mydept.serviceId: microservicecloud-dept

mydept.path: /mydept/**

统一公共前缀

zuul:

  prefix: /hosystem

ignored-services: "*"

  routes:

    mydept.serviceId: microservicecloud-dept

mydept.path: /mydept/**

完整的applicaiton.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

zuul:

  prefix: /hosystem

ignored-services: "*"

  routes:

    mydept.serviceId: microservicecloud-dept

mydept.path: /mydept/**

info:

  app.name: hosystem-microcloud

company.name: www.hosystem.com

build.artifactId: $project.artifactId$

build.version: $project.version$

参考文档:

https://github.com/Netflix/zuul/wiki/Getting-Started

8、Spring Cloud Zuul的更多相关文章

  1. Spring Cloud Zuul网关 Filter、熔断、重试、高可用的使用方式。

    时间过的很快,写springcloud(十):服务网关zuul初级篇还在半年前,现在已经是2018年了,我们继续探讨Zuul更高级的使用方式. 上篇文章主要介绍了Zuul网关使用模式,以及自动转发机制 ...

  2. 一:Spring Boot、Spring Cloud

    上次写了一篇文章叫Spring Cloud在国内中小型公司能用起来吗?介绍了Spring Cloud是否能在中小公司使用起来,这篇文章是它的姊妹篇.其实我们在这条路上已经走了一年多,从16年初到现在. ...

  3. 一、Spring Cloud介绍

    springcloud 介绍 研究了一段时间spring boot了准备向spirng cloud进发,公司架构和项目也全面拥抱了Spring Cloud.在使用了一段时间后发现Spring Clou ...

  4. 笔记:Spring Cloud Zuul 快速入门

    Spring Cloud Zuul 实现了路由规则与实例的维护问题,通过 Spring Cloud Eureka 进行整合,将自身注册为 Eureka 服务治理下的应用,同时从 Eureka 中获取了 ...

  5. Spring Cloud Zuul 限流详解(附源码)(转)

    在高并发的应用中,限流往往是一个绕不开的话题.本文详细探讨在Spring Cloud中如何实现限流. 在 Zuul 上实现限流是个不错的选择,只需要编写一个过滤器就可以了,关键在于如何实现限流的算法. ...

  6. spring cloud zuul参数调优

    zuul 内置参数 zuul.host.maxTotalConnections 适用于ApacheHttpClient,如果是okhttp无效.每个服务的http客户端连接池最大连接,默认是200. ...

  7. Spring Cloud Zuul 网关使用与 OAuth2.0 认证授权服务

    API 网关的出现的原因是微服务架构的出现,不同的微服务一般会有不同的服务地址,而外部客户端可能需要调用多个服务的接口才能完成一个业务需求,如果让客户端直接与各个微服务通信,会有以下的问题: 客户端会 ...

  8. 几种常见的微服务架构方案简述——ZeroC IceGrid、Spring Cloud、基于消息队列

    微服务架构是当前很热门的一个概念,它不是凭空产生的,是技术发展的必然结果.虽然微服务架构没有公认的技术标准和规范草案,但业界已经有一些很有影响力的开源微服务架构平台,架构师可以根据公司的技术实力并结合 ...

  9. Spring Cloud Zuul 快速入门

    Spring Cloud Zuul 实现了路由规则与实例的维护问题,通过 Spring Cloud Eureka 进行整合,将自身注册为 Eureka 服务治理下的应用,同时从 Eureka 中获取了 ...

随机推荐

  1. DOS基本命令(Windows下的基本命令部分)

    一.cls(clear screen的简写) 命令作用:清屏屏幕 详细介绍:屏幕显示的所有字符信息都是存放在一个屏幕缓冲区中,cls命令的作用是清除屏幕上的文字,并将该缓冲区清空. 二.dir(dir ...

  2. SQL SERVER数据库使用过程中系统提示死锁处理办法

    马上双节(国庆节.中秋节)了,这篇文章是双节前的最后一篇,祈祷过节期间,数据库稳定运行,服务器正常发挥.祝大家假期愉快!!!! 任何的数据库都会出现死锁的情况,特别是一些大型的复杂业务,数据库架构的设 ...

  3. MOOC JAVA笔记

    MOOC JAVA笔记 1.基础了解 JDK是开发人员安装的,它提供了开发java程序的必须工具 JRE是普通用户安装的,它提供了java的运行环境 JVM是java虚拟机运行程序的核心 2.程序的移 ...

  4. ClickHouse 研讨会学习笔记(clickhouse tips and tricks)

    一.显示执行日志 clickhouse-client --send_logs_level=trace 或者进入client session 后输入 set send_logs_level = 'tra ...

  5. Python:安装Bio库不成功,出现ModuleNotFoundError: No module named 'Bio'

    Bio库的安装并不是pip install bio,而是biopython. ./anaconda3/bin/pip3 install biopython -i https://pypi.douban ...

  6. 详细了解IDM的队列功能

    队列的种类 IDM(Internet Download Manager)下载器的队列分为2种:主要下载队列和同步队列.此外,我们也可以自己创建附加队列. 在左边的[分类]窗口中,黄色的图标为主要下载队 ...

  7. 用MathType怎么把分数打出来

    分数是生活中最常见的数,作为大学生学习高数概率论更是离不开分数.分数是指整体的一部分,或更一般地,任何数量相等的部分.分数是一个整数a和一个正整数b的不等于整数的比. 当在日常用语中说话时,分数描述了 ...

  8. FL studio系列教程(三):如何用FL Studio做电音

    电音制作,自然少不了适合做电音的软件,市面上可以进行电音制作的软件不少,可是如果在这些软件中只能选择一款的话,想必多数人会把票投给FL Studio,毕竟高效率是永远不变的真理,今天就让我们来看看如何 ...

  9. 基于Python+requests搭建的自动化框架-实现流程化的接口串联

    框架产生目的:公司走的是敏捷开发模式,编写这种框架是为了能够满足当前这种发展模式,用于前后端联调之前(后端开发完接口,前端还没有将业务处理完毕的时候)以及日后回归阶段,方便为自己腾出学(mo)习(yu ...

  10. linkedin第三方登陆

    到linkedin注册成为开发者:https://developer.linkedin.com/zh-cn 成功后,创建应用,填写重定向地址,得到appid和appkey 使用这个sdk https: ...