SpringCloud入门(十)统一网关Gateway

news/2024/10/11 10:52:45/

    一、网关的作用

        Spring Cloud Gateway 是 Spring Cloud 的一个全新项目,该项目是基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等响应式编程和事件流技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。

网关架构图:


    
            

网关的主要作用:

权限控制:网关作为微服务入口,需要校验用户是是否有请求资格,如果没有则进行拦截。

路由和负载均衡:一切请求都必须先经过gateway,但网关不处理业务,而是根据某种规则,把请求转发到某个微服务,这个过程叫做路由。当然路由的目标服务有多个时,还需要做负载均衡。

限流:当请求流量过高时,在网关中按照下流的微服务能够接受的速度来放行请求,避免服务压力过大。

        在SpringCloud中网关的实现包括两种:

 gateway
  zuul

        Zuul是基于Servlet的实现,属于阻塞式编程。而SpringCloudGateway则是基于Spring5中提供的WebFlux,属于响应式编程的实现,具备更好的性能。

二、搭建网关

演示网关的基本路由功能。基本步骤如下:

1. 创建SpringBoot工程gateway,引入网关依赖
2. 编写启动类
3. 编写基础配置和路由规则
4. 启动网关服务进行测试

步骤1. 创建SpringBoot工程gateway,引入网关依赖

创建springBoot工程gateway ,并引入网关依赖

<!--网关-->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<!--nacos服务发现依赖-->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>


步骤2. 编写启动类

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class GatewayApplication {public static void main(String[] args) {SpringApplication.run(GatewayApplication.class, args);}
}


步骤3. 编写基础配置和路由规则

创建application.yml文件,

server:port: 10010 # 网关端口
spring:application:name: gateway # 服务名称cloud:nacos:server-addr: localhost:8848 # nacos地址gateway:routes: # 网关路由配置- id: user-service # 路由id,自定义,只要唯一即可# uri: http://127.0.0.1:8081 # 路由的目标地址 http就是固定地址uri: lb://userservice # 路由的目标地址 lb就是负载均衡,后面跟服务名称predicates: # 路由断言,也就是判断请求是否符合路由规则的条件- Path=/user/** # 这个是按照路径匹配,只要以/user/开头就符合要求

        我们将符合Path 规则的一切请求,都代理到 uri参数指定的地址。本示例中,我们将 /user/**开头的请求,代理到lb://userservice,lb是负载均衡,根据服务名拉取服务列表,实现负载均衡。

路由配置包括:

  1. 路由id:路由的唯一标示

  2. 路由目标(uri):路由的目标地址,http代表固定地址,lb代表根据服务名负载均衡

  3. 路由断言(predicates):判断路由的规则,

  4. 路由过滤器(filters):对请求或响应做处理


步骤4. 启动网关服务进行测试

重启网关,访问http://localhost:10010/user/1时,符合/user/**规则,请求转发到uri:http://userservice/user/1

得到了响应结果,测试成功。


http://www.ppmy.cn/news/1537413.html

相关文章

小猿口算APP脚本(协议版)

小猿口算是一款专注于数学学习的教育应用,主要面向小学阶段的学生。它提供多种数学练习和测试,包括口算、速算、应用题等。通过智能化的题目生成和实时批改功能,帮助学生提高数学计算能力。此外,它还提供详细的学习报告和分析,帮助家长和教师了解学生的学习进度和薄弱环节…

回归分析在数据挖掘中的应用简析

一、引言 在数据驱动的时代&#xff0c;数据挖掘技术已成为从海量数据中提取有价值信息的关键工具。 回归分析&#xff0c;作为一种经典的统计学习方法&#xff0c;不仅在理论研究上有着深厚的基础&#xff0c;而且在实际 应用中也展现出强大的功能。 二、回归分析基础 2.1 回…

【w1r3s靶场渗透】

文章目录 一、主机发现 二、服务探测 三、挖掘漏洞 ftp渗透 Mysql登录 Web渗透 四、提权 一、主机发现 Kali IP&#xff1a;192.168.78.128 靶机IP&#xff1a;192.168.78.184 nmap -sP 192.168.78.0/24 二、服务探测 端口探测 nmap -sT -sV -p- 192.168.78.184 漏…

springboot kafka多数据源,通过配置动态加载发送者和消费者

前言 最近做项目&#xff0c;需要支持kafka多数据源&#xff0c;实际上我们也可以通过代码固定写死多套kafka集群逻辑&#xff0c;但是如果需要不修改代码扩展呢&#xff0c;因为kafka本身不处理额外逻辑&#xff0c;只是起到削峰&#xff0c;和数据的传递&#xff0c;那么就需…

【开源免费】基于SpringBoot+Vue.JS医院电子病历管理系统(JAVA毕业设计)

本文项目编号 T 008 &#xff0c;文末自助获取源码 \color{red}{T008&#xff0c;文末自助获取源码} T008&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 医…

从0开始深度学习(7)——线性回归的简洁实现

在从0开始深度学习&#xff08;5&#xff09;——线性回归的逐步实现中&#xff0c;我们手动编写了数据构造模块、损失函数模块、优化器等&#xff0c;但是在现代深度学习框架下&#xff0c;这些已经包装好了 本章展示如果利用深度学习框架简洁的实现线性回归 0 导入头文件 im…

为网站筑起坚固防线,应对HTTP/2快速重置DDoS威胁

在互联网技术飞速发展的今天&#xff0c;网站已成为企业和组织对外交流的重要窗口。然而&#xff0c;随着网络攻击手段的日益复杂化&#xff0c;即便是看似普通的协议漏洞也可能成为攻击者手中的利器。最近&#xff0c;一种利用HTTP/2快速重置&#xff08;RST&#xff09;包的D…

如何将uniapp项目首次提交到指定git仓库

在移动应用开发领域&#xff0c;uniapp凭借其跨平台的优势&#xff0c;已经成为许多开发者的首选框架。创建一个uniapp项目后&#xff0c;将代码提交到版本控制仓库是项目管理的第一步。本文将详细介绍如何将uniapp项目首次提交到指定的Git仓库。 准备工作 在开始之前&#x…