12-使用gateway作为微服务网关

news2024/9/25 3:19:15

本文介绍spring gateway的使用,包括配置文件和使用java代码配置,让大家了解spring gateway的用法。如果不了解什么是微服务网关,就先查查资料,网关相对来说是比较重要的微服务组件。

0、环境

  • springboot 2.4.2
  • springcloud gateway 3.0.1
  • jdk 1.8

1、创建微服务网关

两个服务,一个是网关,另一个是普通服务。网关用来转发请求,普通服务用来处理对应的请求。项目结构如下图:
在这里插入图片描述
下面咱们一起构造这个项目。先创建gateway项目,就是普通maven项目。

1.1、添加依赖

<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-gateway</artifactId>
   <version>3.0.1</version>
</dependency>

1.2、添加配置文件

创建bootstrap。yml文件,并添加如下配置:

server:
  port: 9080

spring:
  application:
    name: gateway-sample

  cloud:
    gateway:
      discovery:
        locator:
          enabled: true
      routes:
        - id: gateway-02
          uri: http://localhost:9081          #匹配后提供服务的路由地址
          predicates:
            - Path=/sample/service1/say/**         # 断言,路径相匹配的进行路由
          filters:
            - StripPrefix=2

说明:

  • uri:说明要跳转的uri地址
  • StripPrefix:指定要从源地址截取的个数,以“/“为分隔符。以地址栏输入“http://localhost:8080/sample/service1/say/** ”为例,域名部分不计,那就是从sample/service1/say/** 计算,StripPrefix=2,表示从前截取两个”/”,那么结构就是:/say/**,你的服务必须对应这个uri,否则会出现404。
  • id:随便写,保持和其他服务不同就是了

1.3、启动

springboot启动类就不多说了吧,启动只要没有出错就算是正常。这里唯一要注意的是pom文件里不能引入springboot web依赖,一旦引入启动时就报错。大家注意观察,我们启动gateway时,是netty而不是tomcat。

2、service1 服务编写

service1服务属于普通服务,按照普通springboot服务创建就行。这里注意端口保持和gateway不一样,我这里用9081。注意pom.xml要引入springboot web的依赖。在这里贴出controller的代码:

@RestController
@RequestMapping("/say")
public class SomethingToSay {

    @GetMapping("/hello")
    public String sayHello() {
        return "hello";
    }

    @GetMapping("/hi")
    public String sayHi() {
        return "hi";
    }

    @GetMapping("/ohh")
    public String sayOhh() {
        return "ohh";
    }
}

好了,一个带网关的微服务就开发完成了。通关网关uri做一下测试。
http://localhost:9080/sample/service1/say/hello,看结果若是返回了hello表示正常。

3、排错

在通过网关调用后端服务时,出现404,大部分情况都是手抖了,输错了uri,但是大部分同学又排查不细心,认为是gateway的问题,在这里我带大家写个全局Filter,首先确认请求已经到了gateway。这个Filter写在gateway模块里,代码如下:

@Component
public class MyGlobalFilter implements GlobalFilter, Ordered {

    @Override
    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
        System.out.println("服务调用请求:" + exchange.getRequest().getURI());
        return chain.filter(exchange).then(Mono.fromRunnable(() ->
                System.out.println("服务调用返回了," + exchange.getResponse().getStatusCode())));
    }

    @Override
    public int getOrder() {
        return 0;
    }
}

效果如图:
在这里插入图片描述
OK,一个简单的网关就开发完成了。

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

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

相关文章

游戏开发设计模式之装饰模式

目录 装饰模式在游戏开发中的具体应用案例是什么&#xff1f; 如何在Unity中实现装饰模式以动态扩展游戏对象的功能&#xff1f; 装饰模式与其他设计模式&#xff08;如适配器模式、代理模式&#xff09;相比&#xff0c;有哪些优势和劣势&#xff1f; 优势 劣势 与适配器…

唯众2024年高职人工智能实训室方案解读

随着人工智能&#xff08;AI&#xff09;技术在全球范围内的快速发展&#xff0c;越来越多的职业技术学院开始重视AI相关专业的建设和实训室的搭建。作为在人工智能教育领域有着丰富经验的企业&#xff0c;唯众针对2024年的市场需求&#xff0c;推出了一套全面的人工智能实训室…

软件设计师教程(第5版)第8章 算法设计与分析(更新中)

8.1 算法设计与分析的基本概念P416 8.1.1 算法P416 【算法】是对特定问题求解步骤的一种描述&#xff0c;它是指令的有限序列&#xff0c;其中每一条指令表示一个或多个操作。P416 一个算法还具有下列5个重要特性&#xff1a;【有穷】性、【确定】性、【可行】性、【输入】、…

Games101学习 - 线性代数综述

1. 叉积矩阵形式 叉乘矩阵形式通常在物理模拟中有运用&#xff0c;处理四元数旋转也类似这样的形式。 // 定义两个向量 A 和 B FVector A(1.0f, 2.0f, 3.0f); FVector B(4.0f, 5.0f, 6.0f);// 计算叉积 FVector CrossProduct FVector::CrossProduct(A, B);if (GEngine) {GEn…

CVPR2024满分论文:基于可变形三维高斯的高质量单目动态重建方法

一、摘要 隐式神经表征为动态场景的重建和渲染开辟了新的途径。然而&#xff0c;尖端的动态神经渲染方法严重依赖这些隐式表征&#xff0c;它们常常难以捕捉场景中物体的复杂细节。此外&#xff0c;隐式方法通常难以实现动态场景的实时渲染&#xff0c;限制了它们在多种任务中的…

Excel公式与图表自动化:在Python中操作Excel公式并自动化生成图表

目录 一、Python操作Excel公式 1.1 读取Excel文件 1.2 识别和处理公式 1.3 批量处理公式 二、自动化生成图表 2.1 使用pandas和matplotlib生成图表 2.2 使用xlwings在Excel中直接生成图表 2.3 自定义图表样式 2.4 自动化生成复杂图表 三、总结 在数据分析和自动化办公…

VMware Workstation Pro for Personal Use (For Windows) 17.0.0

VMware Workstation Pro for Personal Use (For Windows) 17.0.0 弄了半天终于找到下载地址了 现在VMware被博通&#xff08;broadcom&#xff09;收购且宣布了17.5版本的VMware Workstation Pro对个人用户免费许可使用。由于现在官网的下载方式有改变&#xff0c;故贴出来一…

【数学分析笔记】第2章第4节收敛准则(4)

2.数列极限 2.4 收敛准则 上节课举了一个例子 a N 1 1 2 p 1 3 p . . . 1 n p a_{N}1\frac{1}{2^{p}}\frac{1}{3^{p}}...\frac{1}{n^{p}} aN​12p1​3p1​...np1​ p > 1 p>1 p>1&#xff0c; { a n } \{a_{n}\} {an​}收敛 0 < p ≤ 1 0<p\le 1 0<p≤…

OpenStack——keystone认证服务

1、作用 认证授权 服务目录 2、组件 keystone-server keystone-DB 3、架构 ①组成 用户认证流程&#xff1a; 1.Horizon为用户提供界面; 2.用户输入用户名密码&#xff0c;有Horizon转发至Keystone做认证授权 ; 3.如果认证鉴权成功&#xff0c;会给用户发放一个临时的unscope…

AIGC:Flux.1 NF4 使用 diffusers 推理

背景介绍 Flux 参数量很大 (包括 ext encoder2, autoencoder, 以及 diffusion model) , 使用Diffusers推理,显存占用 30GB。 有大佬做了 NF4 版本,效果依旧能打。所以本文使用 diffusers 推理 NF4版本的 Flux.1 本文重点 1:flux.1-dev-nf4 国内镜像加速下载 2:依赖环境…

error: undefined reference to `__imp__ZN11QSerialPortC1EP7QObject‘

问题 在qt console程序里使用QSerialPot, 在.pro文件里添加了serialport&#xff0c;在main.cpp里也包含了QtSerialPort/QSerialPort&#xff0c;但是编译报错如下&#xff1a; 原因 serialport模块加错了位置&#xff0c;应该添加到QT后面&#xff0c;而实际添加到CONFIG后…

mybatis-plus中Swagger 模式和Kotlin 模式是什么?

在 MyBatis-Plus 中&#xff0c;Swagger 模式和 Kotlin 模式是为了支持特定技术栈和开发需求的两种配置选项。它们分别针对 API 文档生成和 Kotlin 语言提供了更好的支持和集成。 Swagger 模式 Swagger 模式主要用于生成 API 文档。在 MyBatis-Plus 中启用 Swagger 模式后&am…

视频合并怎么弄?高效方法立即学

记得那次家庭聚会&#xff0c;我翻看着那些珍贵的录像带&#xff0c;突然萌生了一个想法&#xff1a;要是能把这些零散的记忆片段合并成一部完整的影片&#xff0c;那该多好啊&#xff01; 于是我开始了视频合并剪辑的探索之旅。从一开始的手足无措&#xff0c;到逐渐熟悉每一…

linux,ubuntu,使用ollama本地部署大模型llama3,模型通用,简易快速安装

文章目录 前言安装ollama启动ollama运行llama3模型查看ollama列表删除模型通过代码进行调用REST API 前言 在拥有了一条4090显卡后&#xff0c;那冗余的性能让你不得不去想着办法整花活&#xff0c;于是就想着部署个llama3&#xff0c;于是发现了ollama这个新大陆&#xff0c;…

【硬件操作入门】2--GPIO与门电路、二极管三极管、LED电路与操作

【硬件操作入门】2–GPIO与门电路&#xff08;二极管&三极管&#xff09;、LED电路与操作 文章目录 【硬件操作入门】2--GPIO与门电路&#xff08;二极管&三极管&#xff09;、LED电路与操作一、GPIO与门电路1.1、GPIO的应用1.2、GPIO引脚操作1.2.1 设置引脚为GPIO功能…

今日算法:蓝桥杯基础题之“切面条”

你好同学&#xff0c;我是沐爸&#xff0c;欢迎点赞、收藏、评论和关注&#xff01;个人知乎 从今天开始&#xff0c;一起了解算法&#xff0c;每日一题&#xff0c;从 JavScript 的技术角度进行解答&#xff0c;如果你对算法也感兴趣&#xff0c;请多多关注哦。 问题描述 一…

网络维护~2003服务环境

一、2003服务环境 背景&#xff1a;学习测试需要在虚拟机进行实验&#xff0c;主机kali验证开源十大漏洞&#xff0c;部分需要2003服务环境。 博客声明:搭建网络是为了学习用途&#xff0c;请遵守《网络安全法》. 二、安装iis服务软件 &#xff08;一&#xff09;查看Internet…

重生奇迹MU 单挑团战全能的职业

若你正在寻找一款能够在重生奇迹MU单挑或团战中表现不怂的职业&#xff0c;那么恭喜你&#xff0c;你来到了正确的地方。在本文中&#xff0c;我们将为你介绍几个在重生奇迹MU中表现出色的职业&#xff0c;并分享一些有用的技巧和策略&#xff0c;帮助你在游戏中获得胜利。不用…

【Linux】进程池实例

这篇博客讲解了进程池的创建过程&#xff0c;并在最后附上了完整代码。 现在有一个父进程&#xff0c;然后提前创建出一批子进程&#xff0c;未来如果父进程master有一些任务要交给子进程去运行&#xff0c;而不用像shell&#xff0c;需要执行命令才回去创建进程&#xff0c;创…

气膜建筑与装配式建筑的对比分析—轻空间

在现代建筑中&#xff0c;气膜建筑和装配式建筑都作为新型建筑形式受到关注。然而&#xff0c;在很多应用场景中&#xff0c;气膜建筑展现出了比装配式建筑更为明显的优势。以下将着重对比气膜建筑相较于装配式建筑的独特优势。 气膜建筑的突出优势 1. 更快的施工速度 气膜建筑…