首页 > 其他分享 >SpringCloud入门(十)统一网关Gateway

SpringCloud入门(十)统一网关Gateway

时间:2024-11-25 21:55:26浏览次数:7  
标签:网关 服务 请求 SpringCloud gateway user Gateway 路由

  一、网关的作用


  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是负载均衡,根据服务名拉取服务列表,实现负载均衡。

路由配置包括:

  路由id:路由的唯一标示

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

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

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


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

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

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

标签:网关,服务,请求,SpringCloud,gateway,user,Gateway,路由
From: https://www.cnblogs.com/kongsq/p/18568867

相关文章

  • SpringCloud入门(七)Feign声明式远程调用
    利用RestTemplate发起远程调用的代码,存在下面的问题:代码可读性差,编程体验不统一。参数复杂URL难以维护。Feign是一个声明式的http客户端,官方地址:https://spring.io/projects/spring-cloud-openfeign 。其作用是帮助我们优雅的实现http请求的发送。一、使用Feign实......
  • SpringCloud入门(八)Feign自定义配置
    一、Feign自定义配置Feign可以支持很多的自定义配置,如下表所示:-类型:feign.Logger.Level作用:修改日志级别说明:包含四种不同的级别:NONE、BASIC、HEADERS、FULL-类型:feign.codec.Decoder作用:响应结果的解析器说明:http远程调用的结果......
  • SpringCloud入门(六)Nacos注册中心(下)
    一、Nacos环境隔离Nacos提供了namespace来实现环境隔离功能。  nacos中可以有多个namespace。namespace下可以有group、service等。不同namespace之间相互隔离,例如不同namespace的服务互相不可见。使用NacosNamespace环境隔离步骤:1.在Nacos控制台可以创建n......
  • 基于智能物联网关的车辆超重AI检测应用
    超重超载是严重的交通违法行为,超重超载车辆的交通安全风险极高,像是一颗行走的“不定时炸弹”,威胁着社会公众的安全。但总有一些人受到利益驱使,使超重超载的违法违规行为时有发生。 随着物联网和AI技术的发展,针对预防杜绝路面车辆的超重超载行为,可以采用基于智能物联网关的AI超......
  • 工帽/安全帽检测视频分析网关摄像机实时接入分析平台安全帽识别监控解决方案
    在建筑施工领域,保障工人的安全始终是项目管理的重中之重。随着人工智能和计算机视觉技术的发展,智能视频监控系统在工地安全管理中的应用越来越广泛,尤其是安全帽检测技术,它通过自动化的方式大大提高了安全监管的效率和效果。以下是对工地安全帽检测算法的工作原理、功能应用以及其......
  • Gateway系列---【gateway集成nacos-discovery】
    1.pom添加nacos-discovery依赖<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation=......
  • gateway拦截器获取请求参数
    packagecom.dp.config;importorg.springframework.cloud.gateway.filter.GatewayFilterChain;importorg.springframework.cloud.gateway.filter.GlobalFilter;importorg.springframework.cloud.gateway.filter.factory.rewrite.CachedBodyOutputMessage;importorg.s......
  • SpringCloudAlibaba系列---【maven如何实现多继承?】
    1.问题当我们使用SpringCloudAlibaba创建微服务的时候,我们的父pom工程的parent肯定是springboot-parent,但是,我们又要使用spring-cloud-alibaba-dependencies作为版本管理,parent肯定只能有一个,这时候该怎么办呢?2.解决方案使用dependencyManagement的pom和import即可,例如下面的sp......
  • 【深入理解SpringCloud微服务】Hystrix作用与原理剖析
    【深入理解SpringCloud微服务】Hystrix作用与原理剖析Hystrix的作用熔断降级隔离Hystrix有限流的功能吗?Hystrix的原理@HystrixCommand注解是如何起作用的工作流程1、构建命令对象2、执行命令3、检查缓存是否开启并且是否命中4、检查断路器是否打开5、检查线程池或信号量......
  • Springcloud家政服务系统-计算机设计毕业源码87907
    目 录摘要1绪论1.1研究背景1.2 研究意义1.3论文结构与章节安排2 系统分析2.1可行性分析2.2系统流程分析2.2.1数据新增流程2.2.2数据修改流程2.2.3数据删除流程2.3 系统功能分析2.3.1功能性分析2.3.1非功能性分析62.4 系统用例分......