Spring Cloud Zuul网关的介绍及使用

news2024/11/19 20:26:34

Zuul 是 Netflix OSS 中的一员,是一个基于 JVM 路由和服务端的负载均衡器。提供路由、监控、弹性、安全等方面的服务框架。Zuul 能够与 Eureka、Ribbon、Hystrix 等组件配合使用。

Zuul 的核心是过滤器,通过这些过滤器我们可以扩展出很多功能,比如:

1)动态路由

动态地将客户端的请求路由到后端不同的服务,做一些逻辑处理,比如聚合多个服务的数据返回。

2)请求监控

可以对整个系统的请求进行监控,记录详细的请求响应日志,可以实时统计出当前系统的访问量以及监控状态。

3)认证鉴权

对每一个访问的请求做认证,拒绝非法请求,保护好后端的服务。

4)压力测试

压力测试是一项很重要的工作,像一些电商公司需要模拟更多真实的用户并发量来保证重大活动时系统的稳定。通过 Zuul 可以动态地将请求转发到后端服务的集群中,还可以识别测试流量和真实流量,从而做一些特殊处理。

5)灰度发布

灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。

使用Zuul构建微服务网关

创建一个 Maven 项目 zuul-demo,在 pom.xml 中增加 Spring Cloud 项目的依赖,然后加入 Zuul 的依赖,代码如下所示。

  1. <dependency>
  2. <groupId>org.springframework.cloud</groupId>
  3. <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
  4. </dependency>

属性文件中增加配置信息:

  1. spring.application.name=zuul-demo
  2. server.port=2103
  3. zuul.routes.biancheng.path=/biancheng/**
  4. zuul.routes.biancheng.url=http://dandelioncloud.cn

启动类的代码如下所示:

  1. @EnableZuulProxy
  2. @SpringBootApplication
  3. public class App {
  4. public static void main(String[] args) {
  5. SpringApplication.run(App.class, args);
  6. }
  7. }

通过 zuul.routes 来配置路由转发,biancheng 是自定义的名称,当访问 biancheng/** 开始的地址时,就会跳转到 http://dandelioncloud.cn 上。比如输入地址为“http://localhost:2103/biancheng/abc”,访问结果如图 1 所示。


图 1 访问结果

集成 Eureka

通过对上部分的学习,我们已经可以简单地使用 Zuul 进行路由的转发了,在实际使用中我们通常是用 Zuul 来代理请求转发到内部的服务上去,统一为外部提供服务。

内部服务的数量会很多,而且可以随时扩展,我们不可能每增加一个服务就改一次路由的配置,所以也得通过结合 Eureka 来实现动态的路由转发功能。

首先需要添加 Eureka 的依赖,代码如下所示。

  1. <dependency>
  2. <groupId>org.springframework.cloud</groupId>
  3. <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
  4. </dependency>

启动类不需要修改,因为 @EnableZuulProxy 已经自带了 @EnableDiscoveryClient。只需要在配置文件中增加 Eureka 的地址即可:

  1. eureka.client.serviceUrl.defaultZone=http://zhangsan:123456@localhost:8761/eureka/

重启服务,我们可以通过默认的转发规则来访问 Eureka 中的服务。访问规则是“API 网关地址+访问的服务名称+接口 URI”。

比如访问我们之前在 hystrix-feign-demo 服务中定义的 /callHello 接口,就相当于通过 http://localhost:2103/hystrix-feign-demo/callHello 来访问 hystrix-feign-demo 服务中的 /callHello 接口,如图 2 所示。


图 2 访问结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/82067.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

猿如意中的【Linux命令查询】工具详情介绍

一、工具名称 Linux命令查询 二、下载安装渠道 Linux命令查询通过CSDN官方开发的【猿如意】客户端进行下载安装。 2.1 什么是猿如意&#xff1f; 猿如意是一款面向开发者的辅助开发工具箱&#xff0c;包含了效率工具、开发工具下载&#xff0c;教程文档&#xff0c;代码片段…

R语言动态可视化:制作历史全球平均温度的累积动态折线图动画gif视频图

在某些情况下&#xff0c;你可能希望通过在每帧中添加数据并保留先前添加的数据来进行动画处理。最近我们被客户要求撰写关于动态可视化的研究报告&#xff0c;包括一些图形和统计输出。 现在&#xff0c;我们将通过制作点线图的动画来探索。 以下是制作图表静态版本的代码&a…

如何打造一个高效可用的组织知识库

作者 | 唐三 在管理改进活动中&#xff0c;衡量一个企业管理改进成功与否的一个重要指标就是组织知识库的构建和使用。 组织知识库是一个学习型组织在项目操作过程中所积累的无形资产&#xff0c;同时组织过程资产的累积程度是衡量一个项目组织管理体系成熟度的重要指标&#…

阿里云ECS安装VirtualBox

文章目录virtualbox repovirtualbox repo适配阿里云的OS修改virtualbox repo成功下载安装报错安装 libvpxvirtualbox repo [virtualbox] nameOracle Linux / RHEL / CentOS-$releasever / $basearch - VirtualBox baseurlhttp://download.virtualbox.org/virtualbox/rpm/rhel/…

C#开发——Winform中ToolTip闪烁的解决方案

1、背景 首先要知道在何种情况下需要用tooltip控件&#xff0c;使用场景应该是&#xff1a;鼠标移入某个控件区域&#xff0c;显示tooltip的提示&#xff1b;移出后隐藏该提示。 采用的比较多的方式是&#xff0c;对该控件的MouseMove和MouseLeave事件进行处理。 至于为什么不是…

【产品人卫朋】华为销售体系 | 销售管理:LTC流程体系详解

LTC 是华为的三大主流程之一&#xff0c;从线索发现开始&#xff0c;直至收回现金&#xff0c;从而实现端到端地拉通。 三大主流程分别是&#xff1a; 其他流程可以参考之前文章&#xff1a; 华为IPD流程 华为ITR流程 继续今天的内容&#xff0c;在不同的流程环节卷入不同的…

[1.2.0新功能系列:一] Apache Doris 1.2.0 版本 Light Schema Change

在 1.2.0 新版本中&#xff0c;对数据表的加减列操作&#xff0c;不再需要同步更改数据文件&#xff0c;仅需在 FE 中更新元数据即可&#xff0c;从而实现毫秒级的 Schema Change 操作&#xff0c;且存在导入任务时效率的提升更为显著。与此同时&#xff0c;使得 Apache Doris …

干货 | Dubbo 接口测试原理及多种方法实践总结

1、什么是 Dubbo&#xff1f; Dubbo 最开始是应用于淘宝网&#xff0c;由阿里巴巴开源的一款优秀的高性能服务框架&#xff0c;由 Java 开发&#xff0c;后来贡献给了 Apache 开源基金会组织。 下面以官网的一个说明来了解一下架构的演变过程&#xff0c;从而了解 Dubbo 的诞…

【RNN:并行场景和纹理学习】

Infrared and visible image fusion via parallel scene and texture learning &#xff08;基于并行场景和纹理学习的红外与可见光图像融合&#xff09; 本文提出了一种基于并行场景和纹理学习的红外和可见光图像融合方法。我们的主要目标是部署深度神经网络的两个分支&…

登临科技加入飞桨硬件生态共创计划,共推AI应用规模化落地

近日&#xff0c;上海登临科技有限公司与飞桨签署硬件生态共创计划合作协议&#xff0c;正式加入由飞桨发起的硬件生态共创计划。当前双方的合作主要基于登临科技自主创新的通用GPU系列产品——Goldwasser&#xff08;高凛&#xff09;。 上海登临科技有限公司 高性能、通用…

松耦合式的权限控制设计,自定义权限表达式yyds!

背景 企业应用系统逐渐增多后&#xff0c;各系统单独管理各自的用户数据容易形成信息孤岛&#xff0c;分散的用户管理模式阻碍了企业应用向平台化演进&#xff0c;为降低企业系统设计开发、集成成本&#xff0c;打通技术闭环完善系统设计实现流程、优化提升系统设计实现的整体…

电子元器件行业如何做好库存管理优化?试试数商云B2B电商系统!

我们知道&#xff0c;企业的库存管理对企业各个部门的成本核算业务有着直接的影响&#xff0c;因此&#xff0c;优化企业库存管理对于企业的整体发展十分重要。对于电子元器件行业来说&#xff0c;许多中小规模的电子元器件分销商&#xff0c;由于早期缺乏管理经验&#xff0c;…

活体深度方向模型

🍿*★,*:.☆欢迎您/$:*.★* 🍿 不断的利用 输入 不断的对比新的输入 查询暂时的记忆模块 查询后交互方法 之后得到新的输入 查询不到变使用 模型进行预测 交互 这样方能实现自我更新 自我 记忆 自我维护 不断个更新 设计

[volatile]关键字和wait()notify()详解

目录 1.内存可见性问题-引入 2.volatile关键字 3.从java内存模型的角度内存可见性问题 4.wait()和notify()方法 4.1 wait()方法 4.2 notify()方法 wait与sleep的区别(面试题) 4.3 notifyAll()方法 4.4 多个线程使用wait和notify方法 1.内存可见性问题-引入 构造一个…

阿里三面:说一说你在上家公司都用过哪些限流方案?

一、限流思路 常见的系统服务限流模式有&#xff1a;熔断、服务降级、延迟处理和特殊处理四种。 1、熔断 将熔断措施嵌入到系统设计中&#xff0c;当系统出现问题时&#xff0c;若短时间内无法修复&#xff0c;系统会自动开启熔断开关&#xff0c;拒绝流量访问&#xff0c;避…

数据库原理及MySQL应用 | 视图

视图是关系数据库系统提供给用户以多种角度观察数据库中数据的重要机制&#xff0c;透过视图用户可以看到数据表中看书需要的内容。 视图(View)是关系数据库系统提供给用户以多种角度观察数据库中数据的重要机制。在用户看来&#xff0c;视图是通过不同角度去看实际表中的数据&…

如何在GPU上运行pandas和sklearn?

当涉及大量数据时&#xff0c;Pandas 可以有效地处理数据。但是它使用CPU 进行计算操作。该过程可以通过并行处理加快&#xff0c;但处理大量数据仍然效率不高。 在以前过去&#xff0c;GPU 主要用于渲染视频和玩游戏。但是现在随着技术的进步大多数大型项目都依赖 GPU 支持&a…

【C++初阶7-string实现】xxx坐享其成,xxx苦不堪言

前言 本期分享Cstring类的模拟实现&#xff08;参考SGI 30实现&#xff09;&#xff0c;不套类模版&#xff0c;降低学习成本&#xff0c; 进一步加深理解。 属性介绍 名称具体成员动态字符数组char* _s存储有效数据的容量size_t capacity有效数据的个数size_t sizenposstat…

【OpenCV 例程 300篇】251. 特征匹配之暴力匹配

『youcans 的 OpenCV 例程300篇 - 总目录』 【youcans 的 OpenCV 例程 300篇】251. 特征匹配之暴力匹配 特征匹配是特征检测和特征描述的基本应用&#xff0c;在在图像拼接、目标识别、三维重建等领域的应用非常广泛。 基于特征描述符的特征点匹配是通过对两幅图像的特征点集合…

基于统一空间方法的动态切换拥挤(DSC)DSC-MOAGDE算法附matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …