当前位置: 首页 > news >正文

十四、Zuul网关

目录

一、API网关作用:

二、网关主要功能:

2.1、统一服务入口

2.2、接口鉴权

2.3、智能路由

2.4、API接口进行统一管理

2.5、限流保护

三、 新建一个项目作为网关服务器

3.1、项目中引入Zuul网关依赖

3.2、在项目application.yml中配置网关路由信息

3.3、在项目启动类中加上注解@EnableZuulProxy开启网关代理

3.4、访问网关服务localhost:9031/api/goods/goodsInfo

3.5、使用网关时注意:

3.6、案例说明


一、API网关作用:

API网关为微服务架构中的服务提供了统一的访问入口,客户端通过API网关访问相关服务。API网关的定义类似于设计模式中的门面模式,它相当于整个微服务架构中的门面,所有客户端的访问都通过它来进行路由及过滤。它实现了请求路由、负载均衡、校验过滤、服务容错、服务聚合等功能。

二、网关主要功能:

2.1、统一服务入口

为所有的微服务提供一个唯一的入口,把客户端和服务端进行隔离,屏 蔽我们真实的服务信息,从而保护我们的服务。

2.2、接口鉴权

对所有的请求信息进行安全检测。如果检验不通过,直接拒绝访问。

2.3、智能路由

动态将请求转发到真实的服务器集群上。可通过负载均衡、反向代理、熔断 机制实现

2.4、API接口进行统一管理

日志收集、管理等。

2.5、限流保护

进行限流措施,从而对我们的服务进行保护。

三、 新建一个项目作为网关服务器

3.1、项目中引入Zuul网关依赖

<!-- 引入zuul网关-->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-zuul</artifactId>
</dependency>

3.2、在项目application.yml中配置网关路由信息

server:port: 9031spring:application:name: server-zuuleureka:instance:# 使用ip地址作为host,而不是机器号/电脑名称prefer-ip-address: true
#    Eureka客户端向注册中心发送心跳的时间间隔是1s,默认是30slease-renewal-interval-in-seconds: 1
#    Eureka服务端在收到一次心跳后等待时间上限是2s,默认是90s
#    超时将剔出该微服务,也可以在Eureka服务端进行设置lease-expiration-duration-in-seconds: 2client:service-url:defaultZone: http://localhost:8090/eureka/,http://localhost:8060/eureka/#zuul网关配置第一种方式
zuul:routes:api-goods: #路由规则名称,自己指定无特殊要求,可根据业务规则命名path: /api/goods/**   #配置请求转发路径,后续以/api/goods/**的请求将会转发到server-goods的服务中处理#url与serviceId二选一,同时存在则会直接路由到指定的url而不会使用负载均衡serviceId: server-goods  #配置服务名,由负载均衡算法将请求分发到服务集群中处理(默认轮询)
#      url: http://localhost:8041/ #指定url,由网关直接将请求转发到指定的服务器中处理(一般比较少用)#zuul网关配置第二种方式
#zuul:
#  routes:
#    server-goods: #以服务名作为路由规则
#       path: /api-goods/**  #指定请求转发路径#zuul网关配置第三种方式
#zuul:
#  routes:
#    #服务名: 转发路径
#    server-goods: /api-goods/**

3.3、在项目启动类中加上注解@EnableZuulProxy开启网关代理

@SpringBootApplication
@EnableEurekaClient
//开启网关代理
@EnableZuulProxy
public class ZuulApp {public static void main(String[] args) {SpringApplication.run(ZuulApp.class,args);}
}

3.4、访问网关服务localhost:9031/api/goods/goodsInfo

通过网关服务将请求转到到实际的服务中处理。

http://localhost:9031/api/goods为网关服务器接口,/api/goods会由zuul智能路由找到具体的服务server-goods(在application.yml中配置了路由规则),然后后面的/goodsInfo则是具体服务提供的api接口,根据路由规则负载均衡分发到服务集群的节点下调用真实的处理逻辑。

通过刷新网页,可以看到端口号在8041和8042之间来回切换(网关以负载均衡的轮询算法将请求转发到实际的服务器中处理)

3.5、使用网关时注意:

如果配置网关路由规则时使用的是通过服务名作为路由规则/或者以serviceID的形式配置服务名来匹配真实的服务器,则网关需要与对应转发的服务器注册到同一个注册中心集群下,即zuul网关需要搭配注册中心使用;如果配置网关路由规则时使用的是通过url来匹配真实的服务器,则可以不搭配使用注册中心

3.6、案例说明

server-goods(服务提供者---真实服务器处理逻辑):

分别在8041、8042两个端口开启了两台服务器

通过网关服务请求访问接口/goodsInfo

server-goods服务的controller处理逻辑

@RestController
@RequestMapping("/")
public class GoodsController {@Value("${server.port}")private  String port;@GetMapping("/goodsInfo")public String goodsInfo(){return "goodsInfo"+port;}
}

相关文章:

十四、Zuul网关

目录 一、API网关作用&#xff1a; 二、网关主要功能&#xff1a; 2.1、统一服务入口 2.2、接口鉴权 2.3、智能路由 2.4、API接口进行统一管理 2.5、限流保护 三、 新建一个项目作为网关服务器 3.1、项目中引入Zuul网关依赖 3.2、在项目application.yml中配置网关路由…...

5项目五:W1R3S-1(思路为主!)

特别注明&#xff1a;本文章只用于学习交流&#xff0c;不可用来从事违法犯罪活动&#xff0c;如使用者用来从事违法犯罪行为&#xff0c;一切与作者无关。 目录 前言 一、信息收集 二、网页信息的收集 三、提权 总结 前言 思路清晰&#xff1a; 1.信息收集&#xff0c;…...

Day958.代码的分层重构 -遗留系统现代化实战

代码的分层重构 Hi&#xff0c;我是阿昌&#xff0c;今天学习记录的是关于代码的分层重构的内容。 来看看如何重构整体的代码&#xff0c;也就是如何对代码分层。 一、遗留系统中常见的模式 一个学校图书馆的借书系统。当时的做法十分“朴素”&#xff0c;在点击“借阅”按钮…...

分子模拟力场

分子模拟力场 AMBER力场是在生物大分子的模拟计算领域有着广泛应用的一个分子力场。开发这个力场的是Peter Kollman课题组&#xff0c;最初AMBER力场是专门为了计算蛋白质和核酸体系而开发的&#xff0c;计算其力场参数的数据均来自实验值&#xff0c;后来随着AMBER力场的广泛…...

ERP 系统在集团化企业财务管理中的应用

&#xff08;一&#xff09;集团统一会计核算平台的构建原理及功能 第一&#xff0c;搭建集中统一会计核算平台的基础是确定财务组 织及岗位&#xff0c;在此基础上制定统一的会计核算政策、规范集中 基础数据、落实内控管理制度。 第二&#xff0c;具备了以上建立集中统一会计…...

达摩院开源多模态对话大模型mPLUG-Owl

miniGPT-4的热度至今未减&#xff0c;距离LLaVA的推出也不到半个月&#xff0c;而新的看图聊天模型已经问世了。今天要介绍的模型是一款类似于miniGPT-4和LLaVA的多模态对话生成模型&#xff0c;它的名字叫mPLUG-Owl。 论文链接&#xff1a;https://arxiv.org/abs/2304.14178…...

Group相关问题-组内节点限制移动范围

1.在节点中定义dragComputation,限制节点的移动范围 注意事项 组节点不定义go.Placeholder ,设置了占位符后组内节点移动将改变组节点位置dragComputation中自定义stayInGroup计算规则是根据groupNode的resizeObject计算 如果开启了resizable:true,建议指定其改变大的零部件r…...

程序员该如何学习技术

程序员该如何学习技术 前言 学习是第一生产力&#xff0c;我从来都是这么认为的&#xff0c;人只有只有不断地学习才能意识到自己的缺点和不足&#xff0c;身为程序员&#xff0c;我更认为人们应当抱着终身学习的想法实践下去&#xff0c;这是我所一直践行且相信的。 高处不胜寒…...

springboot+vue交流互动系统(源码+文档)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的交流互动系统。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 &#x1f495;&#x1f495;作者&#xff1a;风歌&a…...

【2023华为OD笔试必会25题--C语言版】《01 预定酒店》——排序、二分查找

本专栏收录了华为OD 2022 Q4和2023Q1笔试题目,100分类别中的出现频率最高(至少出现100次)的25道,每篇文章包括原始题目 和 我亲自编写并在Visual Studio中运行成功的C语言代码。 仅供参考、启发使用,切不可照搬、照抄,查重倒是可以过,但后面的技术面试还是会暴露的。✨✨…...

C语言实现队列--数据结构

&#x1f636;‍&#x1f32b;️Take your time ! &#x1f636;‍&#x1f32b;️ &#x1f4a5;个人主页&#xff1a;&#x1f525;&#x1f525;&#x1f525;大魔王&#x1f525;&#x1f525;&#x1f525; &#x1f4a5;代码仓库&#xff1a;&#x1f525;&#x1f525;魔…...

前端CSS经典面试题总结

前端CSS经典面试题总结 2.1 介绍一 下 CSS 的盒子模型&#xff1f;2.2 css 选择器优先级&#xff1f;2.3 垂直居中几种方式&#xff1f;2.4 简明说一下 CSS link 与 import 的区别和用法&#xff1f;2.5 rgba和opacity的透明效果有什么不同&#xff1f;2.6 display:none和visib…...

cookie、session、token的区别是什么

前言 今天就来说说session、cookie、token这三者之间的关系&#xff01;最近这仨玩意搞得头有点大&#x1f923; 1.为什么会有它们三个&#xff1f; 我们都知道 HTTP 协议是无状态的&#xff0c;所谓的无状态就是客户端每次想要与服务端通信&#xff0c;都必须重新与服务端链接…...

leetcode分类刷题 -- 前缀和和哈希

力扣 class Solution { public int subarraySum(int[] nums, int k) { Map<Integer,Integer> map new HashMap<>(); int count0,sum0; map.put(0,1); for(int i:nums){ sum i; if(map.containsKey(sum-k)) count map.get(sum-k); map.compute(sum,(key,v)->…...

浅谈作为程序员如何写好文档:了解读者

我作为从一名懵懂的实习生转变为工程师的工作经历中&#xff0c;伴随着技术经验的成长&#xff0c;也逐渐意识到了编写文档是知识和经验传递给其他人的最有效方式。通过文档&#xff0c;可以分享我的技术知识和最佳实践&#xff0c;使其他人更好地理解我的工作。在这里&#xf…...

一文读懂国内首本《牛客2023金融科技校园招聘白皮书》

金融科技人才作为金融数字化转型的关键支撑&#xff0c;但当下金融科技人才培养体系尚未形成&#xff0c;优秀的金融科技人才供不应求&#xff0c;目前存在严重的人才供给问题。 据调研数据统计&#xff0c;96.8%的金融机构存在金融科技人才缺口&#xff0c;54.8%的机构认为新…...

深度学习03-卷积神经网络(CNN)

简介 CNN&#xff0c;即卷积神经网络&#xff08;Convolutional Neural Network&#xff09;&#xff0c;是一种常用于图像和视频处理的深度学习模型。与传统神经网络相比&#xff0c;CNN 有着更好的处理图像和序列数据的能力&#xff0c;因为它能够自动学习图像中的特征&…...

你真正知道什么是品牌营销么?颠覆你旧有认知

什么是品牌营销&#xff0c;新时代也需要新时代的定义和诠释&#xff01; 尤其这次疫情加剧了行业竞争&#xff0c;让很多企业都开始重新重视品牌建设&#xff0c;以此实现对产品的价格保护&#xff0c;脱离同质化恶性竞争&#xff1b;提高品牌知名度&#xff0c;实现更高价值…...

pytorch 测量模型运行时间,GPU时间和CPU时间,model.eval()介绍

文章目录 1. 测量时间的方式2. model.eval(), model.train(), torch.no_grad()方法介绍2.1 model.train()和model.eval()2.2 model.eval()和torch.no_grad() 3. 模型推理时间方式4. 一个完整的测试模型推理时间的代码5. 参考&#xff1a; 1. 测量时间的方式 time.time() time.…...

十三、超时重试机制

目录 超时配置和重试机制 FeignClient 、Ribbon 、 Hystrix三个之间配置优先级的关系 配置常用属性 Ribbon超时和重试配置: Ribbon重试次数计算公式&#xff1a; FeignClient 超时配置&#xff1a; Hystrix超时配置&#xff1a; Hystrix超时计算公式&#xff1a; 超时配…...

springboot 百货中心供应链管理系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;百货中心供应链管理系统被用户普遍使用&#xff0c;为方…...

ssc377d修改flash分区大小

1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

Opencv中的addweighted函数

一.addweighted函数作用 addweighted&#xff08;&#xff09;是OpenCV库中用于图像处理的函数&#xff0c;主要功能是将两个输入图像&#xff08;尺寸和类型相同&#xff09;按照指定的权重进行加权叠加&#xff08;图像融合&#xff09;&#xff0c;并添加一个标量值&#x…...

相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

Rust 异步编程

Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...

OPENCV形态学基础之二腐蚀

一.腐蚀的原理 (图1) 数学表达式&#xff1a;dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一&#xff0c;腐蚀跟膨胀属于反向操作&#xff0c;膨胀是把图像图像变大&#xff0c;而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...

2023赣州旅游投资集团

单选题 1.“不登高山&#xff0c;不知天之高也&#xff1b;不临深溪&#xff0c;不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

【Java学习笔记】BigInteger 和 BigDecimal 类

BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点&#xff1a;传参类型必须是类对象 一、BigInteger 1. 作用&#xff1a;适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...

基于Java+MySQL实现(GUI)客户管理系统

客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息&#xff0c;对客户进行统一管理&#xff0c;可以把所有客户信息录入系统&#xff0c;进行维护和统计功能。可通过文件的方式保存相关录入数据&#xff0c;对…...

Linux 内存管理实战精讲:核心原理与面试常考点全解析

Linux 内存管理实战精讲&#xff1a;核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用&#xff0c;还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...