SpringCloud.03.网关Gateway

news2024/10/6 18:27:43

目录

 网关Gateway的概念:

准备

使用

方式一

因为配置了网关所以可以直接通过gateway发送请求

方式二

修改配置前:http://localhost:8082/provider/run

方式三(动态路由)

导入配置类


 网关Gateway的概念:

Spring Cloud Gateway Spring 官方基于 Spring5.0 SpringBoot2.0 Project Reactor 等技术开发的网
旨在为微服务框架提供一种简单而有效的统一的 API 路由管理方式,统一访问接口。
Spring Cloud Gateway 作为 Spring Cloud 生态体系中的网关,目标是替代 Netflix Zuul ,其不仅提供统
一的路由方式,并且基于 Filter 链的方式提供了网关基本的功能,例如:安全、监控 / 埋点和限流等等。
它是基于 Netty 的响应式开发模式。
1️⃣ 路由( route ):路由是网关最基础的部分,路由信息由一个 ID ,一个目的 URL 、一组断言工厂和一
Filter 组成。如果断言为真,则说明请求 URL 和配置的路由匹配。
2️⃣ 断言( Predicate ): Java8 中的断言函数, Spring Cloud Gateway 中的断言函数输入类型是
Spring5.0 框架中的 ServerWebExchange Spring Cloud Gateway 中的断言函数允许开发者去定义匹配
来自 http Request 中的任何信息,比如请求头和参数等。
3️⃣ 过滤器( Filter ):一个标准的 Spring WebFilter Spring Cloud Gateway 中的 Filter 分为两种类型:
Gateway Filter Global Filter 。过滤器 Filter 可以对请求和响应进行处理。

准备

创建一个springboot项目命名为gateway,通过该项目(网关)统一管理provider和consumer的所有请求

使用

将以下依赖导入到gateway项目

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
方式一

配置gateway项目的yml文件

server:
  port: 8082
spring:
  application:
    name: gateway
  cloud:
    nacos:
        server-addr: localhost:8848
gateway:
discovery:
locator:
#是否与服务发现组件进行结合,通过service-id(必须设置成大写)转发到具体的服务实例。默认
false
#为true代表开启基于服务发现的路由规则。
enabled: false
#配置之后访问时service-id无需大写
lower-case-service-id: true
因为配置了网关所以可以直接通过gateway发送请求

  配置前:http://localhost:8080/provider/run

  配置后:http://localhost:8082/provider/run

方式二

配置gateway项目的yml文件

server:
  port: 8082
spring:
  application:
    name: gateway
  cloud:
    nacos:
        server-addr: localhost:8848
gateway:
discovery:
locator:
#是否与服务发现组件进行结合,通过service-id(必须设置成大写)转发到具体的服务实例。默认
false
#为true代表开启基于服务发现的路由规则。
enabled: false
#配置之后访问时service-id无需大写
lower-case-service-id: true
routes:
# 路由标识(id:标识,具有唯一性)
配合读取类使用
- id: user-consumer-api
#目标服务地址(uri:地址,请求转发后的地址),会自动从注册中心获得服务的IP,不需要手动写死
uri: lb://consumer
#优先级,越小越优先
#order: 999
#路由条件(predicates:断言)
predicates:
# 路径匹配,
- Path=/aa/**
filters:
#路径前缀删除示例:请求/name/bar/foo,StripPrefix=2,去除掉前面两个前缀之后,最后转
发到目标服务的路径为/foo
#前缀过滤,请求地址:http://localhost:8084/usr/hello
#此处配置去掉1个路径前缀,再配置上面的 Path=/usr/**,就将**转发到指定的微服务
#因为这个api相当于是服务名,只是为了方便以后nginx的代码加上去的,对于服务提供者
service-client来说,不需要这段地址,所以需要去掉
- StripPrefix=1
修改配置前:http://localhost:8082/provider/run

修改配置后:http://localhost:8082/prov/run

方式三(动态路由)

配置gateway项目的yml文件

server:
  port: 8082
spring:
  application:
    name: gateway
  cloud:
    nacos:
        server-addr: localhost:8848
gateway:
nacos:
server-addr: ${spring.cloud.nacos.discovery.server-addr}
# namespace: xxx-xx-xx-xx
data-id: dynamic-routing.json
group: DEFAULT_GROUP

使用动态路由需要配合读取类使用

dynamic-routing.json 文件

{
  "refreshGatewayRoute": true,
  "routeList": [
    {
      "id": "provider-api",
      "predicates": [
        {
          "name": "Path",
          "args": {
            "_genkey_0": "/ppp/**"
          }
        }
      ],
      "filters": [
        {
          "name": "StripPrefix",
          "args": {
            "_genkey_0": "1"
          }
        }
      ],
      "uri": "lb://provider",
      "order": 0
    }
  ]
}

导入配置类

配置文件放在nacos后可以通过配置类解析出nacos中的json文件,因为json文件配置了所有请求;

上述代码只配置了provider的请求所以只能访问provider且通过 http://localhost:8082/ppp/run 进行访问。如果访问 http://localhost:8082/consumer/test01 会被网关拦截

配置类放在资源中,有需要自取。

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

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

相关文章

如何统一给文件夹名加后缀?这个方法教你一键搞定

随着计算机的普及&#xff0c;我们每天都会处理大量的文件和文件夹。有时候&#xff0c;为了更好地管理和分类文件&#xff0c;我们会给文件夹统一加上后缀。给文件加上后缀后最直接的好处就是方便文件管理。当我们给文件夹加上后缀时&#xff0c;我们可以很容易地根据后缀来判…

如何创作出优秀的电子邮件营销(EDM)?

EDM出现的时间很早&#xff0c;是非常传统的一种推广方式。即便是其他推广方式的蓬勃兴起&#xff0c;EDM依旧深受很多行业的喜爱。主要源于它极高的性价比&#xff0c;据可靠数据&#xff0c;EDM的投资回报比达1&#xff1a;48。 那一封优秀的EDM应该是怎么样的呢&#xff1f;…

校园失物招领系统的设计与实现-Flask+Mysql+LayUI

1.设计要求&#xff1a; 2.python项目结构&#xff1a; 3.开发工具&#xff1a;PyCharmNavicat for MySQL 数据库表设计&#xff1a; 4.运行效果截图&#xff1a; (1) 管理员登录页 &#xff08;2&#xff09;管理员界面&#xff1a; &#xff08;3&#xff09;物品登记页面&…

进阶Docker3:Dokerfile构建镜像

目录 Dockerfile 构建基础镜像 基本机构 命令&#xff1a; 命令解释&#xff1a; 准备工作 创建镜像 上传镜像 Dockerfile Dockerfile 是一个文本格式的配置文件&#xff0c; 用户可以使用 Dockerfile 来快速创建自定义的镜像&#xff0c;另外&#xff0c;使 用Docke…

升降式OLED透明屏,影响价格的因素有这6大方面

以下是一篇关于升降OLED透明屏的文章&#xff0c;包括其规格、实现原理、应用领域、特色优势和价格等方面&#xff1a; 升降OLED透明屏的规格升降OLED透明屏的尺寸可以根据不同的需求进行定制&#xff0c;尺寸范围从32英寸到200英寸不等。同时&#xff0c;它的厚度不到1厘米&am…

小程序中使用微信同声传译插件实现语音识别、语音合成、文本翻译功能----语音合成(二)

官方文档链接&#xff1a;https://mp.weixin.qq.com/wxopen/plugindevdoc?appidwx069ba97219f66d99&token370941954&langzh_CN#- 要使用插件需要先在小程序管理后台的设置->第三方设置->插件管理中添加插件&#xff0c;目前该插件仅认证后的小程序。 语音合成…

【软件测试】28岁测试工程师对未来很迷茫?测试之路何去何从?

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 程序员到了30岁是…

瑞吉外卖笔记系列(1) —— 环境配置,后台登录和退出的功能实现

本文档主要介绍软件开发整体流程和瑞吉外卖项目&#xff0c;开发环境搭建步骤&#xff0c;以及简单的后台系统功能实现 文章目录 一、软件开发整体介绍1.1软件开发流程1.2 角色分工1.3 软件环境 二、瑞吉外卖项目介绍2.1 项目介绍2.2 产品原型展示2.3 技术选型2.4 功能架构2.5 …

Linux Kernel 4.14--EOF

2017 年&#xff0c;Linux 内核长期支持版本&#xff08;LTS&#xff09;的支持时间从原来的2年增加到6年。2023年下半年举行的开源欧洲峰会&#xff0c;LTS 的支持时间取消来了6年&#xff0c;再次缩短到了 2 年。 首个获得6年支持的版就是是 4.14。 在六年支持之后&#xf…

方案解决:5G基站节能及数字化管理

截至2023年10月&#xff0c;我国5G基站总数达321.5万个&#xff0c;占全国通信基站总数的28.1%。然而&#xff0c;随着5G基站数量的快速增长&#xff0c;基站的能耗问题也逐渐日益凸显&#xff0c;基站的用电给运营商带来了巨大的电费开支压力&#xff0c;降低5G基站的能耗成为…

推荐一款实用的免费开源局域网传输工具!轻松搭建网盘的神器!

本文小编给大家分享一款免费开源软件 Filebrowser&#xff0c;使用它可以轻松搭建属于你的个人网盘和网页版文件管理器。 它能做什么呢&#xff1f;想必大家也都用过百度网盘或阿里云盘之类的云存储服务&#xff0c;将自己的所有数据都存储在别人的服务器上&#xff0c;所谓的在…

国图公考:2024山东省事业单位发布招聘公告

更多信息可以登录山东人事考试信息查看&#xff01;

加速度计:M-A552AC1 / AR1

M-A552传感器单元测量3轴加速度&#xff0c;精度高&#xff0c;稳定性好&#xff0c;体积小&#xff0c;功耗低。该传感器单元采用最新技术来提高性能并提供更宽的传感带宽。具有控制器局域网(CAN)接口或RS422接口&#xff0c;支持主机通信 般描述 M-A552是一个三轴数字输出加…

3、电科院FTU检测标准学习笔记-功能检测1

作者简介&#xff1a; 本人从事电力系统多年&#xff0c;岗位包含研发&#xff0c;测试&#xff0c;工程等&#xff0c;具有丰富的经验 在配电自动化验收测试以及电科院测试中&#xff0c;本人全程参与&#xff0c;积累了不少现场的经验 目录 通用功能试验技术要求短路故障设置…

电商API接口主要应用场景有哪些?

随着互联网技术的不断进步和电商行业的迅猛发展&#xff0c;电商API接口在商品交易、物流配送、客户服务等方面发挥着越来越重要的作用。本文将深入探讨电商API接口的技术原理、应用场景、开发方法以及优缺点。 一、技术原理 电商API接口是基于HTTP、TCP、IP等网络协议实现的…

RK3568驱动指南|驱动基础进阶篇-进阶7 向系统中添加一个系统调用

瑞芯微RK3568芯片是一款定位中高端的通用型SOC&#xff0c;采用22nm制程工艺&#xff0c;搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码&#xff0c;支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU&#xff0c;可用于轻量级人工…

KaiwuDB × 风电企业 | 高性能、低成本、释放数据价值

项目背景 某风电企业是国内一流的大型风电装备公司&#xff0c;其自主研发建设了新一代高标准风电 SCADA 系统&#xff0c;专门用于解决风场风机状态监控、发电监测、综合能源管控、智能化运管等难题。 现公司已承接多个风场的风机管理运营工作&#xff0c;共计包含 96 台风力…

腾讯云 IPv6 解决方案

产品矩阵全覆盖 腾讯云全线产品 All in IPv6&#xff1b;云服务器、私有网络、负载均衡、内容分发、域名解析、DDoS 高防等都已支持 IPv6。 全球 IPv6 基础设施 腾讯云在全球开放25个地理区域&#xff0c;运营53个可用区&#xff1b;目前已有多个地域提供 IPv6 接入能力。 …

STC51+TLC2543+ADXL335+proteus

51单片机解析adxl335振动检测蜂鸣器报警课设 通过按键调整振动检测阈值 传感器介绍 TLC2543&#xff1a;12 位精密模数转换器&#xff0c;原理图与引脚功能描述如下所示&#xff1a; 引脚功能1~9、11、12模拟量输入通道10GND电源地13REF-为负基准电压端14REF为正基准电压端…

Leetcode20-唯一摩尔斯密码词(804)

1、题目 国际摩尔斯密码定义一种标准编码方式&#xff0c;将每个字母对应于一个由一系列点和短线组成的字符串&#xff0c; 比如: ‘a’ 对应 “.-” &#xff0c; ‘b’ 对应 “-…” &#xff0c; ‘c’ 对应 “-.-.” &#xff0c;以此类推。 为了方便&#xff0c;所有 26…