Spring Cloud Alibaba-(6)Spring Cloud Gateway【网关】
Spring Cloud Alibaba-(1)搭建项目环境
Spring Cloud Alibaba-(2)Nacos【服务注册与发现、配置管理】
Spring Cloud Alibaba-(3)OpenFeign【服务调用】
Spring Cloud Alibaba-(4)Sentinel【流控和降级】
Spring Cloud Alibaba-(5)Seata【分布式事务】
Spring Cloud Alibaba-(6)Spring Cloud Gateway【网关】
Spring Cloud Alibaba-(7)RocketMQ【分布式消息队列】
1.什么是网关,微服务为什么要使用网关?
Gateway(网关)是一种用于管理和协调外部请求与内部服务交互的技术组件。它充当了一个中心化的代理,负责接收来自客户端的所有请求,并将其转发到适当的后端服务。以下是关于为什么要在微服务架构中使用Gateway的原因:
(1)统一接口:对外部客户端提供一个统一的访问入口。
(2)智能路由:根据请求的内容(如路径、头信息等)决定将请求转发给哪个后端服务。
(3)负载均衡:在多个相同类型的后端服务实例之间分配请求。
(4)认证和鉴权:在请求到达后端服务之前验证用户的凭证。
(5)限流:控制每个客户端的请求频率,防止滥用或DDoS攻击。
(6)缓存:存储响应数据,减少对后端服务的重复请求。
(7)协议转换:在不同的通信协议之间转换请求和响应。
(8)监控和日志:记录请求和响应的详细信息,帮助诊断问题和优化性能。
(9)错误处理:统一处理错误响应,向客户端提供一致性的错误信息。
2.项目创建 gateway 微服务

3. Gateway 整合 Nacos
3.1 引入Maven依赖
<!-- gateway 网关 -->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId>
</dependency><!-- nacos-discovery 服务发现 -->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
3.2 配置 bootstrap.yml
server:port: 8200spring:application:name: gatewaycloud:nacos:discovery:server-addr: http://localhost:8848gateway:routes:- id: order_route # 路由id,路由唯一标识uri: lb://order-service # uri:需要转发的地址 lb:使用 nacos 本地负载均衡策略 order-service:服务名predicates:- Path=/order/** # 访问网关,如果路径是以 /order 开头的所有请求,转发到 order-service- id: product_routeuri: lb://product-servicepredicates:- Path=/product/**
3.3 启动 gateway 服务,http://localhost:8200/product/getById/1 经过 Gateway 请求产品服务

4.断言工厂(Predicate Factories)
断言工厂用于定义路由规则,决定请求是否应该被路由到某个服务。常用的断言工厂包括:
| 断言工厂 | 配置 | 用途 |
| Path |
| 匹配请求路径 |
| Host |
| 匹配请求的主机名 |
| Method |
| 匹配请求的方法类型(GET、POST等) |
| Header |
| 匹配请求头部的某个字段 |
| Query | - Query | 匹配请求的查询参数 |
| Cookie |
| 匹配请求的Cookie |
| RemoteAddr | - R | 匹配客户端的远程地址(IP地址) |
| Port | - Port=8080 | 匹配客户端连接的端口号 |
| Weight | - Weight=group1,2 | 基于权重进行负载均衡 |
5.过滤器工厂(Filter Factories)-局部过滤器
过滤器工厂用于在请求进入或离开网关时执行某些操作。常用的过滤器工厂包括:
| 过滤器工厂 | 配置 | 用途 |
| AddRequestHeader | - AddRequestHeader=X-Request-Header, value | 添加请求头 |
| AddResponseHeader | - AddResponseHeader=X-Response-Header, value | 添加响应头 |
| SetPath | - SetPath=/new/path | 重写请求路径 |
| SetQueryString | - SetQueryString=query=value | 重写请求查询参数 |
| StripPrefix | - StripPrefix=/order-serv | 移除请求路径的前缀 |
| Retry | - Retry=404,3 | 实现请求重试机制 |
6. bootstrap.yml 使用断言工厂、过滤器工厂
spring:cloud:gateway:routes:- id: example-routeuri: lb://example-servicepredicates:- Path=/api/**filters:- AddRequestHeader=X-Request-Header, value- SetPath=/new/path
7.Gateway 整合 Sentinel 实现网关流控降级
7.1 引入Maven依赖
<!-- gateway 网关 -->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId>
</dependency><!-- sentinel 限流降级-->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency><!-- sentinel 整合 gateway-->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-sentinel-gateway</artifactId>
</dependency>
7.2 bootstrap.yml 配置 Sentinel 控制台地址-http://localhost:8858
server:port: 8200spring:application:name: gatewaycloud:nacos:discovery:server-addr: http://localhost:8848gateway:routes:- id: order_route # 路由id,路由唯一标识uri: lb://order-service # uri:路由转发的地址 lb:使用 nacos 本地负载均衡策略 order-service:服务名predicates: # 断言:对请求进行匹配,匹配成功就路由转发,匹配不成功返回404- Path=/order/** # 访问网关,如果路径是以 /order 开头的所有请求,转发到 order-service- id: product_routeuri: lb://product-servicepredicates:- Path=/product/**sentinel:transport:dashboard: http://localhost:8858
相关文章:
Spring Cloud Alibaba-(6)Spring Cloud Gateway【网关】
Spring Cloud Alibaba-(1)搭建项目环境 Spring Cloud Alibaba-(2)Nacos【服务注册与发现、配置管理】 Spring Cloud Alibaba-(3)OpenFeign【服务调用】 Spring Cloud Alibaba-(4)Sen…...
芯科科技2024年Works With开发者大会登陆上海,物联网和人工智能的变革性融合带来无限精彩
谷歌、三星等生态大厂将带来重磅演讲和圆桌讨论,亦可切身体验多样化无线技术实作 中国,北京 – 2024年9月25日 – 安全、智能无线连接技术领域的全球领导厂商Silicon Labs(亦称“芯科科技”,NASDAQ:SLAB)&a…...
华为OD机试 - 匿名信(Python/JS/C/C++ 2024 E卷 100分)
华为OD机试 2024E卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试真题(Python/JS/C/C)》。 刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,…...
Python习题 208:将二维列表数组转置
(编码)将以一下二维列表类型的数组 matrix 进行转置(注:不能用内置标准库及三方库)。 matrix = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ] 转置结果 [[1, 4, 7], [2, 5, 8], [3, 6, 9]] matrix = [[1, 2, 3],[4...
STM32F407HAL库输出互补PWM波以及死区时间计算
互补PWM波配置 STM32F407VET6的高级定时器TIM1、TIM8可以生成互补的PWM波,用HAL库配置非常方便。 我们使用高级定时器TIM1,选择一个通道(我这里选择通道二),然后选择PWM Generation CH2 CH2N。这里N的意思是互补&…...
matlab-对比两张图片的RGB分量的差值并形成直方图
%对比两张图片的RGB分量的差值并形成直方图,改个路径就能用,图片分辨率要一致 close all; clear all; clc; I1imread(E:\test\resources\image\1.jpg); I2imread(E:\test\resources\image\2.jpg); R1I1(:,:,1); G1I1(:,:,2); B1I1(:,:,3); R2I2(:,:,1…...
SpringBoot集成Matlab软件实战
在项目中处理矩阵等复杂数据结构的时候,可以用Matlab程序来运行,其优点是很多的。 专用工具箱和强大的矩阵运算能力:MATLAB 拥有强大的数学工具箱和优化工具箱,适合处理大规模矩阵运算以及水文模型的率定。MATLAB 的 Optimization…...
Java---异常及处理
一.异常 1.概念 程序的非正常执行。高级语言都有异常处理机制(C,Java) 2.一般处理异常的方法 Scanner sc new Scanner(System.in);System.out.println("请输入一个数字:");String s sc.nextLine();if (s.matches("[0-9]&qu…...
【开源免费】基于SpringBoot+Vue.JS网上购物商城(JAVA毕业设计)
本文项目编号 T 041 ,文末自助获取源码 \color{red}{T041,文末自助获取源码} T041,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析5.4 用例设计 六、核…...
添加vscode插件C/C++ snippets,快速生成LVGL .c/.h文件模版
文章目录 一、安装插件二、在安装目录下添加c.json和cpp.json文件①在 C:/Users/yourname/AppData/Roaming/Code/User/snippets/ 目录下创建 c.json 并填入如下内容:②在 C:/Users/yourname/AppData/Roaming/Code/User/snippets/ 目录下创建 cpp.json 并填入如下内容…...
ee trade:如何辨别足金真假
足金,顾名思义,就是含金量非常高的黄金,通常指含金量等于或大于 99% 的黄金,俗称 “二九金”。它在金饰界拥有着不可撼动的地位,深受消费者喜爱。那么,如何判断足金的真假,才能买到货真价实的足…...
GCC使用入门
文章目录 GCC简介单个文件编译过程预处理(Preprocessing)编译(Compilation)汇编(Assembly)链接(Linking) 多文件编译过程头文件搜索路径三种不推荐的方法两种推荐的方法 库文件静态库文件创建和使用静态库链接顺序 动态库文件创建和使用动态库 Warning编译选项调试信息(-g)编译…...
CSS3 字体
CSS3 字体 CSS3字体是网页设计和开发中的一个重要方面,它允许设计师使用各种字体来增强网页的视觉效果和用户体验。在本文中,我们将探讨CSS3字体的基本概念、特性、使用方法以及最佳实践。 1. CSS3字体基本概念 CSS3字体是指使用CSS3样式表来控制网页…...
LeetCode题练习与总结:为运算表达式设计优先级--241
一、题目描述 给你一个由数字和运算符组成的字符串 expression ,按不同优先级组合数字和运算符,计算并返回所有可能组合的结果。你可以 按任意顺序 返回答案。 生成的测试用例满足其对应输出值符合 32 位整数范围,不同结果的数量不超过 10^…...
金融科技革命:API接口开放平台,畅通金融服务之路
金融科技是近年来蓬勃发展的领域,它利用先进的技术手段来改善和创新金融服务。在金融科技的革命中,API接口开放平台扮演着重要的角色,它通过提供统一的接口服务,让金融机构和其他行业能够更方便地进行数据交换和合作。本文将以挖数…...
Java8后新特性介绍
1.接口私有方法(Java9) 在Java9之前,interface接口只能定义abstract抽象方法和default默认方法。如果有多个默认方法使用了相同的处理逻辑,那只能写重复代码,或者再单独建个类进行调用。Java9解决了此类问题ÿ…...
Arthas monitor(方法执行监控)
文章目录 二、命令列表2.3 monitor/watch/trace/stack/tt 相关2.3.1 monitor(方法执行监控)举例1:监控demo.MathGame类,并且每5S更新一次状态。 二、命令列表 2.3 monitor/watch/trace/stack/tt 相关 使用场景: monit…...
语言的副作用
副作用产生于表达式中有至少一处计算,且其中全部或部分计算会影响表达式其他项,这可能产生副作用。编译器的优化很可能凸显副作用。 赋值 副作用并非都是有害的,比如基本的赋值 a b, 对a而言是产生副作用,但完成了赋值要求。 序…...
centos磁盘逻辑卷LVM创建
centos磁盘逻辑卷LVM创建 一、磁盘逻辑卷LVM说明二、centos磁盘使用情况三、LVM安装指南1.LVM工具安装1. yum list lvm2. yum search lvm3. yum search pvcreate4. yum list lvm25. yum install lvm2 2.创建物理卷2.1磁盘情况查看2.2创建物理卷(PV) 3.创…...
BUUCTF蜘蛛侠呀
解压后发现是流量包,好多icmp包 发现icmp包尾部有$$STRAT打头16进制的字符串,好多重复得。我们只需要提取尾部这些字符串是当icmp的type0时上图标识为褐色的字符串,还需要把16进制的字符串转为对应的字符串(bytes 类型)…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...
【力扣数据库知识手册笔记】索引
索引 索引的优缺点 优点1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度(创建索引的主要原因)。3. 可以加速表和表之间的连接,实现数据的参考完整性。4. 可以在查询过程中,…...
在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:
在 HarmonyOS 应用开发中,手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力,既支持点击、长按、拖拽等基础单一手势的精细控制,也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档,…...
如何在看板中体现优先级变化
在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...
STM32F4基本定时器使用和原理详解
STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...
服务器硬防的应用场景都有哪些?
服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...
ETLCloud可能遇到的问题有哪些?常见坑位解析
数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...
【论文阅读28】-CNN-BiLSTM-Attention-(2024)
本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…...
