Gateway的简单介绍和使用

1、Gateway简介:

Gateway 是一种 API 网关(API Gateway)技术,它作为微服务架构中的关键组件,负责为系统的外部请求与内部服务之间提供统一的接入点。Spring Cloud Gateway 是基于 Spring 生态系统实现的一个高性能、易扩展的 API 网关解决方案。它基于 Spring Boot 2.0、Spring WebFlux 和 Project Reactor 构建,具备以下核心特性:

  1. 路由与转发:根据预定义的路由规则,将接收到的请求转发到相应的后端服务。路由规则可以基于路径、HTTP 方法、请求头、查询参数、Cookie 等多种条件进行匹配。

  2. 过滤器机制:通过一系列的过滤器链来处理请求和响应,实现鉴权、限流、熔断、日志记录、跨域处理、请求转换等中间件功能。

  3. 服务发现:与 Spring Cloud 的服务注册与发现组件(如 Eureka、Consul 或 Nacos)无缝集成,支持动态路由,即根据服务注册表自动创建路由到各个微服务实例。

  4. 断路器集成:内置对 Hystrix(现已推荐使用 Spring Cloud Circuit Breaker 通用断路器抽象)的支持,实现服务调用的熔断和降级。

  5. 安全与监控:可通过插件化的方式集成 OAuth2、JWT 等安全机制,以及与 Prometheus、Zipkin 等监控工具配合,实现网关层面的安全控制和性能监控。

2、Spring Cloud Gateway 基本使用与配置

基本配置

在 Spring Cloud Gateway 中,主要通过 YAML 或 properties 文件(通常为 application.yml 或 application.properties)进行配置。基本配置主要包括以下几个部分:

全局配置

server:port: 9527 # 网关服务端口spring:application:name: cloud-gateway # 网关服务名称cloud:gateway:discovery:locator: # 与服务发现组件集成enabled: true # 开启从注册中心动态创建路由的功能

路由配置

spring:cloud:gateway:routes:- id: payment_routh # 路由 ID,需唯一uri: lb://CLOUD-PAYMENT-SERVICE # 转发的目标服务地址,使用服务名通过服务发现机制动态查找predicates:- Path=/Payment/getPaymentById/** # 路由匹配规则,基于请求路径- After=2020-11-20T17:07:24.352+08:00[Asia/Shanghai] # 时间断言,仅匹配在此时间点之后的请求# 其他断言,如基于请求头、Cookie、查询参数等的匹配规则- id: payment_routh2 # 另一条路由配置,同上uri: lb://CLOUD-PAYMENT-SERVICEpredicates:- Path=/Payment/lb/**

过滤器配置

        虽然上面的示例中没有直接展示过滤器配置,但过滤器是 Spring Cloud Gateway 实现功能的核心。可以通过定义全局过滤器或路由级别的过滤器来添加自定义逻辑。例如,可以编写自定义过滤器实现鉴权、限流、日志记录等功能,并在配置文件中引用。

3、Spring Boot 整合 Spring Cloud Gateway 示例

以下是整合 Spring Cloud Gateway 的大致步骤:

3.1、创建 Spring Boot 项目

        使用 Spring Initializr 创建一个新的 Spring Boot 项目,选择所需的 Spring Cloud 版本及相关依赖,包括 spring-cloud-starter-gateway

3.2、添加依赖

         在项目的 pom.xml 或 build.gradle 文件中添加 Spring Cloud Gateway 依赖。例如,使用 Maven 的 pom.xml

<dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency><!-- 如果使用服务发现,添加相应服务发现组件依赖,如 Eureka、Consul 或 Nacos --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency><!-- 其他依赖,如断路器、安全、监控等 -->
</dependencies>

3.3、配置网关

        在项目的 application.yml 或 application.properties 文件中按照前面提到的基本配置示例设置网关的各项参数,包括端口、服务名、路由规则、断言、过滤器等。

3.4、编写自定义过滤器(可选)

        若有特殊需求,如自定义鉴权逻辑、限流策略等,可以编写自定义的 Gateway Filter。实现 GatewayFilter 接口或继承 AbstractGatewayFilterFactory 类,并在配置文件中引用。

3.5、启动应用

        启动 Spring Boot 应用,网关服务就会开始监听指定端口,并根据配置的路由规则和过滤器链处理接收到的请求。

GateWay中的具体代码实现,后面详述,本章知识简单介绍和说明

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

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

相关文章

2024.4.11

1.思维导图 2.指针形式验证大小端存储 #include<myhead.h>int main(int argc, const char *argv[]) {int num 0x12345678;char* ptr (char *)&num;if(*ptr 0x12){printf("big endian\n");}else if(*ptr 0x78){printf("little endian\n");}r…

MINI2440 开发板 给他干出来了

环境是ubuntu14.04。不要问我为什么是这个版本&#xff0c;因为之前的ubuntu12.04 环境干不出来&#xff0c;你去试试就知道了&#xff01;各种资源包下载不下来。 输入启动参数&#xff1a; 进入MINI2440&#xff1a;别说心里一万个开心&#xff0c;启动完成&#xff0c;输入p…

【电子通识】热风枪的结构与使用方法

热风枪的结构 热风枪是专门用来拆焊、焊接贴片元器件和贴片集成电路的焊接工具&#xff0c;它主要由主机和热风焊枪两大部分构成。 热风枪主要有电源开关、风速设置、温度设置、热风连接等部件组成。根据不同品牌和价位的热风枪&#xff0c;有一些功能齐全的也集成了烙铁功能。…

负荷预测 | Matlab基于TCN-LSTM-Attention单输入单输出时间序列多步预测

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.负荷预测 | Matlab基于TCN-LSTM-Attention单输入单输出时间序列多步预测&#xff1b; 2.单变量时间序列数据集&#xff0c;采用前12个时刻预测未来96个时刻的数据&#xff1b; 3.excel数据方便替换&#xff0c;运行…

【鸿蒙开发】系统组件Column

Column组件 Column沿垂直方向布局的容器。 接口&#xff1a; Column(value?: {space?: string | number}) 参数&#xff1a; 参数名 参数类型 必填 参数描述 space string | number 否 纵向布局元素垂直方向间距。 从API version 9开始&#xff0c;space为负数或者…

Mongodb入门--头歌实验MongoDB 之滴滴、摩拜都在用的索引

MongoDB 常用于大数据的存储&#xff0c;在庞大的数据中查询出我们所要的信息&#xff0c;如果使用普通查询方法&#xff0c;遍历所有文档查询&#xff0c;花费的时间太久了。 假设现在有个集合 person&#xff0c;查询命令&#xff1a;db.person.find( {age: 18} )&#xff0…

libVLC 视频窗口上叠加透明窗口

很多时候&#xff0c;我们需要在界面上画一些三角形、文字等之类的东西&#xff0c;我们之需要重写paintEvent方法&#xff0c;比如像这样 void Widget::paintEvent(QPaintEvent *event) 以下就是重写的代码。 void Widget::paintEvent(QPaintEvent *event) {//创建QPainte…

振动信号频域图绘制函数(python版)

在实际应用中&#xff0c;不免会看时域图和频域图&#xff0c;封装了绘制时域图和频域图程序&#xff0c;方便调用 ## 导入包 from matplotlib import pyplot as plt from matplotlib import rcParams import numpy as np import pandas as pdconfig {"font.family"…

创新指南|战略衡量的增长组织:用人工智能增强关键绩效指标(KPI)

传统的关键绩效指标 (KPI)越来越无法提供领导者取得成功所需的信息和见解。他们在跟踪进展、协调人员和流程、确定资源优先级以及推进问责制方面存在不足。本文是 2024 年第一份麻省理工学院 SMR - BCG 人工智能和商业战略全球高管学习和研究项目的调查结果——人工智能和业务战…

最新PDD商家端Anti-Content参数逆向分析与纯算法还原

文章目录 1. 写在前面2. 接口分析3. 断点分析4. 扣JS代码 【&#x1f3e0;作者主页】&#xff1a;吴秋霖 【&#x1f4bc;作者介绍】&#xff1a;擅长爬虫与JS加密逆向分析&#xff01;Python领域优质创作者、CSDN博客专家、阿里云博客专家、华为云享专家。一路走来长期坚守并致…

第十五篇:Mybatis

文章目录 一、什么是MyBatis二、Mybatis入门案例三、配置SQL提示四、数据库连接池四、lombok五、mybatis基础操作5.1 根据id删除5.2 预编译SQL5.3 新增员工5.4 更新员工5.5 查询员工&#xff08;用于页面回显&#xff09;5.6 条件查询 七、XML映射文件八、动态SQL8.1 if语句8.2…

(学习日记)2024.04.12:UCOSIII第四十节:软件定时器函数接口讲解

写在前面&#xff1a; 由于时间的不足与学习的碎片化&#xff0c;写博客变得有些奢侈。 但是对于记录学习&#xff08;忘了以后能快速复习&#xff09;的渴望一天天变得强烈。 既然如此 不如以天为单位&#xff0c;以时间为顺序&#xff0c;仅仅将博客当做一个知识学习的目录&a…

JavaScript_语法--变量

1.4 变量 变量&#xff1a;一小块存储数据的内存空间 Java语言是强类型语言&#xff0c;而JavaScript是弱类型的语言 强类型&#xff1a; 在开辟变量存储空间时&#xff0c;定义了空间将来存储的数据的数据类型。只能存储固定类型的数据 弱类型&#xff1a; 在开辟变量存储空间…

VS中使用QT的UI提升类时,找不到头文件的情况

1、情况简述 在使用VS时&#xff0c;会发现与QCreator存在一些差异。最主要的就是要设置很多东西&#xff0c;如果不配置的话&#xff0c;就会遇到一些问题。下面我分享下我调试过程中遇到的一个问题。使用Qdesigner的UI提升类时&#xff0c;找不到头文件的情况&#xff1a; …

Kivy 学习2

from kivy.app import App from kivy.uix.button import Button from kivy.uix.floatlayout import FloatLayout from kivy.graphics import Rectangle, Colorclass FloatLayoutApp(App):def build(self):def update_rect(layout, *args):设置背景尺寸&#xff0c;可忽略layout…

Spring Cloud学习笔记:Eureka简介,Eureka简单样例

这是本人学习的总结&#xff0c;主要学习资料如下 - 马士兵教育 [TOC](目录)1、Eureka 1.1、架构 Eureka是SpringCloud Nexflix的核心子模块&#xff0c;其中包含Server和Client。 Server提供服务注册&#xff0c;存储所有可用服务节点。 Client用于简化和Server的通讯复杂…

【学习心得】Python中的queue模块使用

一、Queue模块的知识点思维导图 二、Queue模块常用函数介绍 queue模块是内置的&#xff0c;不需要安装直接导入就可以了。 &#xff08;1&#xff09;创建一个Queue对象 import queue# 创建一个队列实例 q queue.Queue(maxsize20) # 可选参数&#xff0c;默认为无限大&am…

物理随机接入信道PRACH数据生成

NR随机接入前导码&#xff08;Preamble&#xff09;采用Zadoff Chu序列&#xff0c;长度分别为839和139。 物理随机接入信道&#xff08;PRACH&#xff09;前导码格式的定义包括PRACH OFDM符号个数、循环前缀&#xff08;CP&#xff09;长度和保护时间&#xff08;GT&#xff…

软件库V1.2版本开源-首页UI优化

iAppV3源码&#xff0c;首页的分类更换成了标签布局&#xff0c;各位可以参考学习&#xff0c;界面名称已经中文标注&#xff01; 老版本和现在的版本还是有较大的区别的&#xff0c;建议更新一下&#xff01; 新版本改动界面如下&#xff1a; 1、首页.iyu&#xff1a;分类按…

Windows:Redis数据库图形化中文工具软件——RESP(3)

这个是用于连接redis数据库的软件工具&#xff0c;安装在windows上的图形化界面&#xff0c;并且支持中文&#xff0c;是在github上的一个项目 1.获取安装包 发布 lework/RedisDesktopManager-Windows (github.com)https://github.com/lework/RedisDesktopManager-Windows/rel…