【退役之重学Java】关于 Gateway

一、 Gateway 是什么

Gateway 是 Spring cloud 的一个全新项目,基于 Spring 5 、Spring Boot 2 和 Project Reactor等技术开发的网关
旨在 是为微服务架构提供一种简单有效的统一的 API 路由管理方式
目标 是替代 Zuul
优势 性能更佳,Gateway 是基于 异步非阻塞模型 进行开发的

二、Gateway 的特性

  1. 基于Spring Framework 5、Project Reactor和Spring Boot 2构建。
  2. 支持在任何请求属性上匹配路由。
  3. 提供断言(Predicates)和过滤器(Filters)功能,用于实现灵活的路由和请求处理。
  4. 具有强大的路由功能,可以根据请求属性进行路由匹配。
  5. 支持动态配置,可以根据需要动态调整路由规则。
  6. 集成了服务发现,可以与服务注册中心集成,实现服务路由和负载均衡。
  7. 具备可扩展性,可以通过自定义过滤器和断言来扩展网关功能。
  8. 支持负载均衡和集成Spring生态系统的各种功能。
  9. 提供了高度可扩展性和灵活性,适用于构建复杂的微服务架构和网关服务。

三、使用 Gateway

Maven pom 文件中添加 Gateway 依赖
application.yml 文件,将 此 Gateway 微服务(eureka 需要自己写一个微服务作为 Gateway,Nacos 好像就不需要了,它有自己的客户端)注册进注册中心

将Gateway微服务注册到注册中心的原因包括:

  1. 服务发现: 注册中心可以让其他微服务发现和访问Gateway服务,实现服务之间的通信和调用。
  2. 负载均衡: 注册中心可以对Gateway进行负载均衡,确保请求能够平均分配到多个Gateway实例上,提高系统的性能和可靠性。
  3. 动态路由: 注册中心可以帮助管理和维护Gateway的路由信息,实现动态路由配置和更新。
  4. 故障恢复: 注册中心可以监控Gateway的健康状态,及时发现故障并进行故障恢复,保证系统的稳定性。
  5. 统一管理: 将Gateway注册到注册中心可以实现统一的服务管理和监控,方便运维人员对Gateway进行管理和监控。

application.yml ,配置路由规则

四、动态路由

  1. 默认情况下 Gateway 会根据注册中心的服务列表,以注册中心中微服务名为路径创建动态路由进行转发,从而实现动态路由的功能

  2. application.yml 开启从注册中心创建动态路由的功能,利用微服务名进行路由,使用 “uri: lb”

  3. 这个意思吧,大概就是:
    a. 创建 Gateway 微服务,并注册进注册中心,开启发现路由的功能
    b. Gateway 微服务就可以根据微服务名称实现动态路由,且负载均衡

五、Predicate 断言

Predicate 就是为了实现一组匹配规则,让请求过来找到对应的 Route 进行处理

六、Filter 过滤器

指的是 Spring 框架中 GatewayFilter 实例,使用过滤器,可以在请求被路由前或者之后对请求进行修改
能干嘛: 全局日志记录,统一网关鉴权

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

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

相关文章

汇编小程序

汇编语言基础程序(持续更修…) 数组求和 ExitProcess PROTO.dataarr WORD 1,2,3,4,5,6,7,8,9,10 .code main PROCmov rbx, 0mov rcx, LENGTHOF arr ;获取arr元素个数mov rsi, OFFSET arr ;获取arr的首地址 Addsum:add bl, [rsi] ;获取rsi寄存器中保存地址对应的值x,…

如何使用MATLAB写测试(1)初识unittests

如何使用MATLAB写测试(1)初识unittests WHAT: 本文介绍如何在MATLAB中写简单的单元测试。 WHY: 在学生时代,我作为一名工科生喜欢用MATLAB的首要原因是可以进行快速的开发。无论是对算法的验证,调试&am…

【git pull 和 push详解】

git pull 和 push详解 1.背景2.命令和解释2.1 git pull简介详情 2.2 git push简介Git Push 参数及详细解释 1.背景 在分布式开发环境中,git pull和git push的使用确保了团队成员之间的代码一致性,减少了不同步导致的问题。它们简化了版本管理&#xff0c…

关于burp的intruder返回包空白问题

记录一下被自己蠢笑的问题 burp返回包为空怎么办,在查询无果后经过多次试验,确实没有效果 看那三个点还以为加载呢,攻击完了怎么一个显示没有 于是…… 鼠标到三个点,往下一拉 哈哈哈哈哈哈哈,真是被自己给蠢到了

[5] CUDA线程调用与存储器架构

CUDA线程调用与存储器架构 前几节简单讲了如何编写CUDA程序,利用GPU的处理能力并行执行多个线程和块。之前所有程序里的线程是相互独立的,没有多个线程之间的通信多是实际应用程序需要中间线程之间的通信,本文将仔细讲解线程调用以及CUDA的分…

@JsonFormat注解出现日期序列化以及反序列化问题(日期比实际日期少一天)

文章目录 前言一、场景如下所示二、问题分析三、JsonFormat注解是什么以下是 JsonFormat 注解的一些常用属性: 四、解决问题解决方式:只需要指定对应的时区就好效果如下: 五、JsonFormat 注解时出现日期问题总结 前言 在一次的偶然机会下发现…

Python基于PyQt6制作GUI界面——按钮

示例对应的制作的 ui文件 界面如下所示。 <?xml version"1.0" encoding"UTF-8"?> <ui version"4.0"><class>Form</class><widget class"QWidget" name"Form"><property name"geom…

ColossalAI Open-Sora 1.1 项目技术报告 (视频生成)

项目信息 项目地址&#xff1a;https://github.com/hpcaitech/Open-Sora技术报告&#xff1a; Open-Sora 1&#xff1a;https://github.com/hpcaitech/Open-Sora/blob/main/docs/report_01.mdOpen-Sora 1.1&#xff1a;https://github.com/hpcaitech/Open-Sora/blob/main/docs…

swift中json和字典Dict或者数组相互转换,JSONSerialization的强大使用

在Swift中&#xff0c;你可以使用JSONSerialization类将JSON字符串转换为字典。要将 Swift 字典转换为 JSON 字符串&#xff0c;我们可以使用JSONSerialization类的data(withJSONObject:options:)方法。这个方法将字典转换为二进制数据&#xff0c;然后我们可以使用String(data…

Day23:Leetcode:530.二叉搜索树的最小绝对差 + 501.二叉搜索树中的众数 + 236. 二叉树的最近公共祖先

LeetCode&#xff1a;530.二叉搜索树的最小绝对差 问题描述 解决方案&#xff1a; 1.思路 中序遍历 2.代码实现 class Solution {int pre;int ans;public int getMinimumDifference(TreeNode root) {ans Integer.MAX_VALUE;pre -1;dfs(root);return ans;}public void d…

TCP协议三次握手、四次挥手

目录 TCP协议三次握手的方式建立连接TCP协议四次挥手的方式关闭连接 TCP协议三次握手的方式建立连接 第一次握手&#xff08;SYN&#xff09;&#xff1a;客户端向服务器发送SYN报文&#xff0c;请求建立连接。该报文包含客户端选择的初始序列号&#xff08;ISN&#xff09;&a…

Unity射击游戏开发教程:(26)创建绕圈跑的效果

unity游戏 在本文中,我将介绍如何为敌人创建圆周运动。gif 中显示的确切行为是敌人沿着屏幕向下移动,直到到达某个点,一旦到达该点,它就会绕圈移动。

从浮点数定义到FP8: AI模型中不同的数据类型

背景&#xff1a;AI模型中不同的数据类型对硬件算力和内存的需求是不同的&#xff0c;为了提高模型在硬件平台的吞吐量&#xff0c;减少数据通信带宽需求&#xff0c;往往倾向于将高位宽数据运算转向较低位宽的数据运算。本文通过重新回顾计算机中整数和浮点数的定义&#xff0…

(delphi11最新学习资料) Object Pascal 学习笔记---第13章第3节 (内存管理技巧 )

13.3 内存管理技巧 Object Pascal中的内存管理遵循三个简单的规则&#xff1a;您必须创建每个对象并分配您需要的每个内存块&#xff1b;您必须销毁您创建和分配的每个对象和内存块&#xff1b;每个对象仅销毁一次。对于动态元素&#xff08;即不在堆栈和全局内存区域中的元素…

解决1万条数据前端渲染不卡的问题

万级数据前端渲染优化 解决思路requestAnimationFrame完整代码 解决思路 将数据分组&#xff0c;通过定时器或requestAnimationFrame两种方式分组渲染到Dom上 requestAnimationFrame 渲染数据-动画requestAnimationFram方法 使用requestAnimationFrame可以将动画的每一帧绘制…

HCIP-Datacom-ARST自选题库__ISIS简答【3道题】

1.IS-1S是链路状态路由协议&#xff0c;便用SPF算法进行路由计算。某园区同时部署了IPv4和IPV6井运行IS-IS实现网络的互联互通&#xff0c;如图所示&#xff0c;该网络IPv4和IPV6开销相同&#xff0c;R1和R4只支持IPV4。缺省情况下&#xff0c;计算形成的IPv6最短路径树中&…

MySQL-笔记-10.关系模式的规范化理论

目录 10.1 规范化内容和异常 问题1:数据冗余 问题2:更新异常 问题3:插入异常 问题4:删除异常 10.2 函数依赖 10.2.1 函数依赖的定义 10.2.2 函数依赖与属性之间类型有关 10.2.3 函数依赖的类型 10.2.3.1 平方函数依赖、非平凡函数依赖 10.2.3.2 完全函数依赖、部分函数…

python数据分析——字符串和文本数据2

参考资料&#xff1a;活用pandas库 1、字符串格式化 &#xff08;1&#xff09;格式化字符串 要格式化字符串&#xff0c;需要编写一个带有特殊占位符的字符串&#xff0c;并在字符串上调用format方法向占位符插入值。 # 案例1 varflesh wound s"Its just a {}" p…

solidworks画螺母学习笔记

螺母 单位mm 六边形 直径16mm&#xff0c;水平约束&#xff0c;内圆直径10mm 拉伸 选择两侧对称&#xff0c;厚度7mm 拉伸切除 画相切圆 切除深度7mm&#xff0c;反向切除 拔模角度45 镜像切除 倒角 直径1mm 异形孔向导 螺纹线 偏移打勾&#xff0c;距离为2mm…

Parquet文件格式详解(含行、列式存储区别)

Parquet文件格式详解 Parquet 是一种列式存储格式&#xff0c;旨在高效地存储和处理大规模数据集。它被设计用于在大数据生态系统中进行数据存储和分析&#xff0c;如 Apache Hadoop 和 Apache Spark。 行式存储 vs 列式存储 在了解 Parquet 文件格式之前&#xff0c;先来对…