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

- Path=/api/**

匹配请求路径

Host

- Host=example.com

匹配请求的主机名

Method

- Method=GET

匹配请求的方法类型(GET、POST等)

Header

- Header=X-Token

匹配请求头部的某个字段

Query

- Query=param

匹配请求的查询参数

Cookie

- Cookie=JSESSIONID

匹配请求的Cookie

RemoteAddr

- RemoteAddr=192.168.0.0/24

匹配客户端的远程地址(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

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

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

相关文章

华为-IPv6与IPv4网络互通的6to4自动隧道配置实验

IPv4向IPv6的过渡不是一次性的,而是逐步地分层次地。在过渡时期,为了保证IPv4和IPv6能够共存、互通,人们发明了一些IPv4/IPv6的互通技术。 本实验以6to4技术为例,阐述如何配置IPv6过渡技术。 配置参考 R1 # sysname R1 # ipv6# interface GigabitEthernet0/0/1ip address 200…

【C语言指南】数据类型详解(下)——自定义类型

&#x1f493; 博客主页&#xff1a;倔强的石头的CSDN主页 &#x1f4dd;Gitee主页&#xff1a;倔强的石头的gitee主页 ⏩ 文章专栏&#xff1a;《C语言指南》 期待您的关注 目录 引言 1. 结构体&#xff08;Struct&#xff09; 2. 联合体&#xff08;Union&#xff09; 3…

【网络安全 | 渗透工具】自动化 .env/.git文件检测

原创文章,禁止转载。 文章目录 1. 安装 DotGit2. 配置 DotGit3. 使用 DotGit 检测 .env / .git 文件1. 安装 DotGit 在谷歌应用商店中搜索 DotGit 并进行安装: 2. 配置 DotGit 安装完成后,可以在设置中开启或关闭相关功能: 3. 使用 DotGit 检测 .env / .git 文件 接下来…

centos7安装Redis单机版

一、检查是否有GCC环境 gcc --version # 提示-bash: gcc: 未找到命令 说明没有gcc环境# 安装gcc环境 yum install gcc# 如果yum源报错 # 1.检查网络是否正常 ping www.baidu.com # 2.备份当前的yum源 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo…

Redis篇(Java操作Redis)

目录 讲解一&#xff1a;简介 讲解二&#xff1a;Jedis Github 一、创建项目、 二、添加依赖 三、配置文件 四、Java连接Redis 五、通过Redis连接池获取连接对象并操作服务器 六、封装JedisUtil对外提供连接对象获取方法 七、Java操作Redis五种数据类型 1. 连接与释放…

避免glibc版本而报错,CentOS等Linux安装node.js完美方法

概述 对于Node.js v18.x或更高&#xff0c;Node.js官方默认是在Ubuntu 20.04, Debian 10, RHEL 8,CentOS 8等高版操作系统上编译得到的&#xff0c;高版本操作系统的glibc版本≥2.28。所以&#xff0c;下载Node.js后&#xff0c;也需要glibc版本≥2.28才能使用。 而CentOS 7.x等…

《安富莱嵌入式周报》第343期:雷电USB4开源示波器正式发布,卓越的模拟前端低噪便携示波器,自带100W电源的便携智能烙铁,NASA航空航天锂电池设计

周报汇总地址&#xff1a;嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 更新一期视频教程 【授人以渔】CMSIS-RTOS V2封装层专题视频&#xff0c;一期视频将常用配置和用法梳理清楚&#xff0…

JMeter对jdbc request以及foreach和loop controller的使用

Jmeter中jdbc request和foreach控制器 1. 使用variable name实现对数据库查询结果的遍历 在foreach controller中&#xff0c;注意要做variable name的关联(correlation), 否则没法取回这里的jdbc request返回的结果。这里的input variable prefix一定要和jdbc request中的var…

【React】react项目中的redux使用

1. store目录结构设计 2. react组件中使用store中的数据——useSelector 3. react组件中修改store中的数据——useDispatch 4. 示例 react-basic\src\store\moduels\counterStore.js import { createSlice } from reduxjs/toolkitconst counterStore createSlice({name: cou…

新书推荐——《深度学习精粹与PyTorch实践》

深度学习绝非不可窥探的黑箱!深入理解其模型和算法的实际运作机制&#xff0c;是驾驭并优化结果的关键。你无需成为数学专家或资深数据科学家,同样能够掌握深度学习系统内部的工作原理。 本书旨在通过深入浅出的方式&#xff0c;为你揭示这些原理&#xff0c;让你在理解和解释…

视频理解新篇章:Mamba模型的探索与应用

人工智能咨询培训老师叶梓 转载标明出处 在计算机视觉领域&#xff0c;视频理解一直是一个核心研究方向&#xff0c;它要求算法能够捕捉视频中的时空动态以定位活动或推断其演变。随着深度学习技术的发展&#xff0c;研究者们探索了多种架构&#xff0c;如递归神经网络(RNN)、…

2024新淘宝镜像地址下载【vue-cli】

需要先安装NodeJS&#xff0c;然后再安装Vue-cli NodeJS下载 nodejs下载&#xff0c;直接搜官网 网址&#xff1a;https://nodejs.org/zh-cn LTS为长期稳定版本&#xff1a; 安装过程 只需要配置一下安装目录&#xff0c;其他都点下一步next 注意安装目录无中文无空格 验证…

【吊打面试官系列-MySQL面试题】为表中得字段选择合适得数据类型

大家好&#xff0c;我是锋哥。今天分享关于【为表中得字段选择合适得数据类型】面试题&#xff0c;希望对大家有帮助&#xff1b; 为表中得字段选择合适得数据类型 字段类型优先级: 整形>date,time>enum,char>varchar>blob,text 优先考虑数字类型&#xff0c;其次是…

微服务sentinel解析部署使用全流程

sentinel源码地址&#xff1a; 介绍 alibaba/Sentinel Wiki GitHub sentinel官方文档&#xff1a; https://sentinelguard.io/zh-cn/docs/introduction.html Sprong Cloud alibaba Sentinel文档【小例子】 : Sentinel alibaba/spring-cloud-alibaba Wiki GitHub 目录 1、…

车辆重识别(改进的去噪扩散概率模型)论文阅读2024/9/29

所谓改进的去噪扩散概率模型主要改进在哪些方面&#xff1a; ①对数似然值的改进 通过对噪声的那个方差和T进行调参&#xff0c;来实现改进。 ②学习 这个参数也就是后验概率的方差。通过数据分析&#xff0c;发现在T非常大的情况下对样本质量几乎没有影响&#xff0c;也就是说…

markdown 中启用音频支持

markdown 中启用音频支持 markdown 默认不支持音频文件&#xff0c;我们通过 html 标签渲染 flask项目 其中音频文件放在 /static/audios/vad_example.wav markdown 内容如下&#xff1a; ## 音频播放器示例 <audio controls ><source src"vad_example.wav…

基于Node.js+Express+MySQL+VUE科研成果网站发布查看科研信息科研成果论文下载免费安装部署

目录 1.技术选型‌ ‌2.功能设计‌ ‌3.系统架构‌ ‌4.开发流程‌ 5.开发背景 6.开发目标 7.技术可行性 8.功能可行性 8.1功能图 8.2 界面设计 8.3 部分代码 构建一个基于Spring Boot、Java Web、J2EE、MySQL数据库以及Vue前后端分离的科研成果网站&#xff0c;可…

新版pycharm如何导入自定义环境

我们新的版本的pycharm的ui更改了&#xff0c;但是我不会导入新的环境了 我们先点击右上角的add interpreter 然后点击添加本地编译器 先导入这个bat文件 再点击load 我们就可以选择我们需要的环境了

调用智谱AI,面试小助手Flask简单示例

文章目录 1.接入AI获取API密钥Python代码 2.小助手的实现流程3.Flask应用示例Python文件.pyindex.html运行Flask应用地址栏输入 http://localhost:5000/ 1.接入AI 获取API密钥 在智谱AI的官方网站上注册&#xff0c;右上角点击API密钥&#xff0c;新建并复制一个 API Key&…

Qt多线程操作sqlite数据库

问题 就是为了多线程操作sqlite数据库,为什么,因为数据库是耗时的操作,一条数据的插入,差不多200ms,如果是数据插入多了,界面会有明显的卡顿,因此必须,多线程操作数据库。 问题是这样的: 插入数据之后,接着更新界面;然而,插入数据是比较耗时的操作,尤其插入数据…