SpringCloud-Netflix学习笔记13——Zuul路由网关
什么是Zuul?
Zuul包含了对请求的路由和过滤两个最主要的功能。
其中路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础,而过滤器功能则负责对请求的处理过程进行干预,是实现请求校验,服务聚合等功能的基础。Zuul和Eureka进行整合,将Zuul自身注册为Eureka服务治理下的应用,同时从Eureka中获得其他微服务的消息,也即以后的访问微服务都是通过Zuul跳转后获得。
注意:Zuul服务最终还是会注册进Eureka。
提供:代理 + 路由 + 过滤 三大功能!
Zuul能干嘛
- 路由
- 过滤
官网文档:https://github.com/Netflix/zuul
Zuul路由的基本配置
1、新建一个子模块 springcloud-zuul-9527,并且添加依赖,依赖如下(其中Zuul 和 Eureka依赖是必要的):
<!--实体类 + web--><dependencies><!--zuul路由--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-zuul</artifactId><version>1.4.7.RELEASE</version></dependency><!--hystrix--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-hystrix</artifactId><version>1.4.7.RELEASE</version></dependency><!--hystrix监控依赖--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-hystrix-dashboard</artifactId><version>1.4.7.RELEASE</version></dependency><!--Ribbon--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-ribbon</artifactId><version>1.4.7.RELEASE</version></dependency><!--eureka服务提供者或者客户端用这个包--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-eureka</artifactId><version>1.4.7.RELEASE</version></dependency><dependency><groupId>com.tang</groupId><artifactId>springcloud-api</artifactId><version>1.0-SNAPSHOT</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies>
2、编写配置文件,端口为 9527,并且Zuul会以服务注册进Eureka ,所以一些Eureka的配置也必不可少,如下:
server:port: 9527# 应用名称,即该微服务的名称
spring:application:name: springcloud-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: springcloud-zuul-9527 # Eureka服务监控页面的Status,不配置的话会有默认值prefer-ip-address: true # 为true,可以显示服务主机所在的ip,而不是默认的localhost
# 配置监控信息,即Status那个页面的信息
info:aap.name: tangshihua-springcloudcompany.name: org.tang.cn
3、编写主启动类,添加注解 @EnableZuulProxy 开启Zuul路由,这里需要说明的是,用这个注解就能将该服务注册进Eureka了,不用加@EnableEurekaClient注解,代码如下:
@SpringBootApplication
@EnableZuulProxy //开启Zuul路由代理(用这个注解就能将该服务注册进Eureka了,不用加@EnableEurekaClient注解)
public class ZuulApplication_9527 {public static void main(String[] args) {SpringApplication.run(ZuulApplication_9527.class, args);}
}
4、开启 ZuulApplication_9527、springcloud-provider-dept-hystrix-8001、springcloud-eureka-7001进行测试。可以看到Zuul被当成一个微服务注册进了 Eureka:

此时我们直接访问8001端口的地址:http://localhost:8001/dept/queryDeptById/2 ,可以获取服务:

我们也可以通过Zuul路由9527的地址对8001的服务进行访问,地址要加上服务名 springcloud-provider-dept(小写):

我的为什么不是 localhost,而是 www.tangshihua.com 呢?因为我在 hosts 文件中做了映射,如下:

文件地址在左上角。
请求拦截
如果我们直接以服务名进行访问的话,就会暴露我们的微服务信息,很不安全,所以我们可以用一个自己定义的名字来替换掉访问地址中的微服务名字,在配置文件中配置即可,如下:
zuul:routes:# 将访问链接中的微服务名称,可以换成mydept,方便隐藏信息mydept.serviceId: springcloud-provider-deptmydept.path: /mydept/**
现在我们不仅可以通过微服务名称访问服务,也可以通过mydept访问微服务,如下:

虽然可以通过mydept访问微服务,但是通过微服务名称还是可以访问微服务,我们可以直接配置,让通过微服务名称直接访问不了微服务,配置如下:
zuul:ignored-services: springcloud-provider-dept # 不能在使用这个路径访问了
效果如下:

如果有很多微服务需要隐藏的话,可以用通配符 * ,配置如下:
zuul:ignored-services: "*" # 隐藏全部的真实路径,因为微服务可能有很多个,不可能把所有名称都写进来,直接用通配符
效果是一样的,这里就不重复演示了。
我们除了拦截请求之外,还可以对访问路径进行一些配置,比如加个前缀之类的,如下:
zuul:prefix: /tang # mydept前面需要加一个/tang前缀才能正常访问
现在要访问微服务的话,需要在地址上加一个前缀 /tang 才能正常访问,如果不加就访问不了,效果如下:


总结
用户请求首先进入Zuul路由网关,通过网关进行路由或者拦截,配置十分方便!
相关文章:
SpringCloud-Netflix学习笔记13——Zuul路由网关
什么是Zuul? Zuul包含了对请求的路由和过滤两个最主要的功能。 其中路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础,而过滤器功能则负责对请求的处理过程进行干预,是实现请求校验,服务聚合等功能…...
Hive 之 DDL操作
DDL 操作是用于操作对象和对象的属性,这种对象包括数据库本身,以及数据库对象,像:表、视图等等 1. 数据库 1.1 创建数据库 数据库在 HDFS 上的默认存储路径是 /user/hive/warehouse/*.db CREATE (DATABASE|SCHEMA) [IF NOT EX…...
2. SpringMVC 请求与响应
文章目录1. 请求映射路径2. 请求参数2.1 get 请求发送普通参数2.2 post 请求发送普通参数2.3 五种类型的参数传递2.4.1 普通参数2.4.2 POJO 数据类型2.4.3 嵌套 POJO 类型参数2.4.4 数组类型参数2.4.5 集合类型参数3. json 数据传输参数(重点)3.1 传输 j…...
leaflet 读取上传的geojson文件,转换为wkt文件(057)
第057个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+leaflet中上传geojson文件,解析geojson文件并转换为WKT,并在地图上显示图片。 直接复制下面的 vue+openlayers源代码,操作2分钟即可运行实现效果. 文章目录 示例效果配置方式示例源代码(共128行)安装 @terraf…...
面试题-前端开发Vue篇(答案超详细)
文章目录 如何实现跨域?JSONP原理和缺点谈谈你对DOM的理解及常用的DOM API说说你对 Vue 的理解说说 Vue 的优缺点什么是虚拟 DOM请描述下 vue 的生命周期是什么vue 如何监听键盘事件?watch 怎么深度监听对象变化删除数组用 delete 和 Vue.delete 有什么区别watch 和计算属性有…...
PTA甲级-1010 Radix c++
文章目录Input Specification:Output Specification:Sample Input 1:Sample Output 1:Sample Input 2:Sample Output 2:一、题干大意二、题解要点三、具体实现总结Given a…...
【项目重构】第1次思考
回顾与反思 2022年~至今(2023年2月),一共重构了2个项目。 第1个项目在重构的时候,总是想着把别人的代码copy过来,改一改,这就算重构好了。这样做效率太低,原因是前人写的代码不一定有很多注释…...
Java:SpringMVC的使用(2)
目录第十二章 REST风格CRUD练习12.1 搭建环境12.2 实现功能思路第十三章 SpringMVC消息转换器13.1 消息转换器概述13.2 使用消息转换器处理请求报文(1) 使用RequestBody获取请求体(2) 使用HttpEntity\<T>获取请求体及请求头13.3 使用消息转换器处理响应报文(1) 使用Respo…...
Elasticsearch7.8.0版本进阶——分布式集群(应对故障)
目录一、Elasticsearch集群的安装1.1、Elasticsearch集群的安装(win10环境)1.2、Elasticsearch集群的安装(linux环境)二、应对故障(win10环境集群演示)2.1、启动集群(三个节点)2.2、…...
【LeetCode】每日一题(2)
目录 题目:1138. 字母板上的路径 - 力扣(Leetcode) 题目的接口: 解题思路: 代码: 过啦!!! 写在最后: 题目:1138. 字母板上的路径 - 力扣&am…...
软件设计师教程(六)计算机系统知识-操作系统知识
软件设计师教程 软件设计师教程(一)计算机系统知识-计算机系统基础知识 软件设计师教程(二)计算机系统知识-计算机体系结构 软件设计师教程(三)计算机系统知识-计算机体系结构 软件设计师教程(…...
Zookeeper下载安装与集群搭建
Zookeeper下载安装与集群搭建1.下载安装1.1 下载安装1.2 配置启动2.集群搭建2.1 搭建要求2.2 准备工作2.3 配置集群2.4 启动集群2.5 模拟集群异常1.下载安装 1.1 下载安装 1、环境准备 ZooKeeper服务器是用Java创建的,它运行在JVM之上。需要安装JDK 7或更高版本。…...
Filter防火墙(8)
实验目的 1、了解个人防火墙的基本工作原理; 2、掌握Filter防火墙的配置。 预备知识防火墙 防火墙(Firewall)是一项协助确保信息安全的设备,会依照特定的规则,允许或是限制传输的数据通过。防火墙可以是一台专属的硬…...
Spring事务的传播级别——包你一文通
文章目录一、简单说明二、具体案例描述2.1.PROPAGATION_REQUIRED2.2.PROPAGATION_REQUIRED_NEW2.3.PROPAGATION_SUPPORTS2.4.PROPAGATION_NOT_SUPPORTED2.5.PROPAGATION_MANDATORY2.6.PROPAGATION_NEVER2.7.PROPAGATION_NESTED三、总结3.1、PROPAGATION_REQUIRED3.2、PROPAGATI…...
C语言(C预编译指令)
目录 1.undef 2.条件编译#ifdef,#else和#endif 3.#ifndef 4.#if和#elif 5.预定义宏 6.#line和#error 7.#pragma 1.undef #undef指令用于取消已定义的#define指令 #define LIMIT 400 #undef LIMIT 如果想使用一个名称但又不确定之前是否已经用过,为了安全起…...
JMeter 接口测试/并发测试/性能测试
Jmter工具设计之初是用于做性能测试的,它在实现对各种接口的调用方面已经做的比较成熟,因此,本次直接使用Jmeter工具来完成对Http接口的测试。因为再做接口测试时可以设置线程组,所以也可做接口性能测试。本篇使用JMeter完成了一个…...
大家心心念念的RocketMQ5.x入门手册来喽
1、前言 为了更好的拥抱云原生,RocketMQ5.x架构进行了大的重构,提出了存储与计算分离的设计架构,架构设计图如下所示: RocketMQ5.x提供了一套非常建议的消息发送、消费API,并统一放在Apache顶级开源项目rocketmq-clie…...
(考研湖科大教书匠计算机网络)第四章网络层-第三节1:IPv4地址概述
获取pdf:密码7281专栏目录首页:【专栏必读】考研湖科大教书匠计算机网络笔记导航 文章目录一:IPv4地址概述二:IPv4地址表示方法(1)概述(2)8位无符号二进制数转十进制正整数ÿ…...
B站Python与OpenCV人脸识别项目超详细记录(对图片、视频、摄像头人脸的检测)
课程来源:一天搞定人脸识别项目!学不会up直接下跪!(pythonopencv)_哔哩哔哩_bilibili 图片来源:感谢王鹤棣先生友情出镜~ 环境配置详见: 在conda虚拟环境中安装OpenCv并在pycharm中使用_cond…...
【Node.js实战】一文带你开发博客项目之Koa2重构(实现session、开发路由、联调、日志)
个人简介 👀个人主页: 前端杂货铺 🙋♂️学习方向: 主攻前端方向,也会涉及到服务端 📃个人状态: 在校大学生一枚,已拿多个前端 offer(秋招) 🚀未…...
Spring Boot新手必看:从零搭建Web项目的5个关键步骤(附常见报错解决方案)
Spring Boot新手实战指南:从零构建Web应用的完整路线图 为什么选择Spring Boot作为你的第一个Java Web框架? 当你第一次接触Java Web开发时,面对众多框架的选择可能会感到迷茫。Spring Boot之所以成为大多数开发者的首选,是因为…...
考研数学二必备:多元函数极值最值实战技巧(附拉格朗日乘数法详解)
考研数学二多元函数极值最值实战指南:从基础到高阶解题策略 多元函数极值与最值问题在考研数学二中占据重要地位,每年真题中至少出现1-2道大题。许多考生在面对这类问题时容易陷入"知道概念但不会解题"的困境。本文将打破传统教材的讲解顺序&a…...
3分钟快速上手:DouYinBot抖音无水印视频下载终极指南 [特殊字符]
3分钟快速上手:DouYinBot抖音无水印视频下载终极指南 🚀 【免费下载链接】DouYinBot 抖音无水印下载 项目地址: https://gitcode.com/gh_mirrors/do/DouYinBot 在短视频内容创作和分享的时代,如何快速获取无水印的抖音视频成为创作者和…...
FBGA200封装揭秘:为什么长鑫这款LPDDR4X内存更适合工业级嵌入式设备?
FBGA200封装工业级LPDDR4X内存的五大实战优势 在工业自动化生产线控制柜里,一块仅有指甲盖大小的内存模块正在零下20度的环境中稳定处理着每秒上千条传感器数据;与此同时,行驶在戈壁滩的智能矿卡车载系统中,同款内存芯片正承受着持…...
YOLOv5 vs YOLOv8:2024年工业部署选型指南(附实测对比)
YOLOv5 vs YOLOv8:2024年工业部署选型指南(附实测对比) 在工业视觉检测领域,目标检测模型的选型直接关系到产线良率、运维成本和系统响应速度。作为YOLO系列当前最成熟的工业级解决方案,YOLOv5和YOLOv8的抉择让不少工程…...
ChatTTS合成速度优化实战:从音频流处理到并行计算
最近在项目中用到了ChatTTS进行语音合成,效果确实不错,但遇到一个很实际的问题:合成速度太慢,尤其是处理长文本时,等待时间让人有点抓狂。于是花了一些时间研究优化方案,把整个探索过程和最终落地的方案记录…...
3步实现PDF文献自动化管理:Zotero Reference插件新手入门指南
3步实现PDF文献自动化管理:Zotero Reference插件新手入门指南 【免费下载链接】zotero-reference PDF references add-on for Zotero. 项目地址: https://gitcode.com/gh_mirrors/zo/zotero-reference 一、价值定位:为什么选择Zotero Reference …...
FLUX小红书V2模型版本对比:V1与V2的核心改进与效果差异
FLUX小红书V2模型版本对比:V1与V2的核心改进与效果差异 1. 引言 如果你最近在玩AI图像生成,特别是想做出那种看起来特别真实、特别有小红书风格的照片,那你肯定听说过FLUX小红书模型。这个模型从V1版本开始就挺火的,主要是因为它…...
一篇关于论文复现的思考:基于领域相似度的复杂网络节点重要度评估算法
论文复现—基于领域相似度的复杂网络节点重要度评估算法 编写程序代码matlab 复现算法仿真最近在学习复杂网络的相关算法,看到一篇挺有意思的论文,讲的是基于领域相似度的节点重要度评估方法。说实话,这类算法听起来有点抽象,但…...
基于Transformer架构解析:Nanbeige 4.1-3B 模型原理与性能调优
基于Transformer架构解析:Nanbeige 4.1-3B 模型原理与性能调优 最近在星图GPU平台上部署和测试Nanbeige 4.1-3B模型时,我发现很多朋友对Transformer架构的理解还停留在“听说过”的阶段,对模型参数、显存占用这些概念更是感到头疼。其实&…...
