springCloudAlibaba之分布式网关组件---gateway

2024-06-17 07:04

本文主要是介绍springCloudAlibaba之分布式网关组件---gateway,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

gateway-网关

  • 网关
  • spring cloud gateway
    • gateway初体验
    • gateway整合nacos
      • 简写方式

网关

在微服务架构中一个系统会被拆分成多个微服务。那么作为客户端(前端)要如何去调用这么多的微服务?如果没有网关的存在,我们只能在客户端记录每个微服务的地址,然后分别去用。
在这里插入图片描述

这样的架构,会存在诸多的问题:

  • 每个业务都会需要鉴权、限流、权限校验、跨域等逻辑,如果每个业务都各自为站。自己造轮子实现一遍,完全没必要,完全可以抽离出来,放到一个统一的地方去做
    上面的问题可以借助网关来解决。
    在这里插入图片描述

网关:所谓API网关,就是指系统的同一入口,它封装了应用程序的内部结构,为客户端提供统一服务,一些与业务功能本身无关的公共逻辑可以在这里实现,诸如认证、鉴权、监控、路由转发等待

添加上API网关之后,系统变成三层结构,系统的架构图如下:
在这里插入图片描述
加入网关之后的架构图
在这里插入图片描述

spring cloud gateway

  • 功能特征
  • 基于spring5.0和springboot2.0进行构建
  • 动态路由:可以匹配任何请求属性
  • 支持路径重写
  • 集成服务发现(nacos、ereka)
  • 可集成流控降级功能(sentinel、hystrix)
  • 可以对路由指定易于编写的断言和过滤器
  • 路由
    路由是网关中最基础的部分,路由信息包括一个ID、一个目的URL、一组断言工厂、一组filter组成。如果断言为真,则说明请求的RUL和配置的路由匹配;
  • 断言
    Java8中的断言函数,gateway中的断言函数类型是spring5.0框架中的servletWebExchange,断言函数允许开发者去定义匹配http request中的任何信息,比如请求头和参数等。
  • 过滤器
    gateway中的filter分为Gateway Filter和Global Filter,filter可以对请求和响应处理
  • 工作原理
    spring cloud gateway的工作原理和zuul的差不多,最大的区别就是gateway的filter只有pre和post两种。

gateway初体验

添加依赖

   <!--添加springcloud gateway依赖--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency>
  • 配置文件
server:port: 8090
# gateway配置
spring:application:name: api-gatewaycloud:#gateway配置gateway:#路由规则routes:- id: order_router #路由的唯一标识,路由到orderuri: http://localhost:8081 #需要转发的地址#断言规则 用于路由规则的匹配predicates:- Path=/order-server/**# http://localhost:8090/order-server/order/buyProduct 路由到↓# http://localhost:8081/order-server/order/buyProductfilters:- StripPrefix=1 #内置过滤器,转发之前去掉第一层路径# http://localhost:8081/order-server/order/buyProduct 去掉后 ↓# http://localhost:8081/order/buyProduct

gateway整合nacos

你这个是springcloud gateway吧,我跟你说一下为什么这么写配置,是这样的,lb代表了负载均衡,有这个标志后,gateway就知道需要进行负载均衡,转发到lb://后面跟的服务名对应的某台服务器上,至于如何实现负载均衡,是通过负载均衡组件来的,比如ribbon或者springcloud-loadbalancer组件拿到服务列表,从而进行服务的转发。所以lb://,其实跟服务注册中心没有关系,就算不是nacos,用其它的,比如eureka,也是这么写lb://。

server:port: 8090
# gateway配置
spring:application:name: api-gatewaycloud:#nacos配置nacos:discovery:server-addr: 192.168.184.15:8848username: nacospassword: nacos#gateway配置gateway:#路由规则routes:- id: order_router #路由的唯一标识,路由到orderuri: lb://order-service #需要转发的地址 lb:使用nacos中的本地负载均衡策略#断言规则 用于路由规则的匹配predicates:- Path=/order-server/**# http://localhost:8090/order-server/order/buyProduct 路由到↓# http://localhost:8081/order-server/order/buyProductfilters:- StripPrefix=1 #内置过滤器,转发之前去掉第一层路径# http://localhost:8081/order-server/order/buyProduct 去掉后 ↓# http://localhost:8081/order/buyProduct

简写方式

当服务注册到nacos后,断言规则可以用服务名来进行匹配,此时配置可以进行简化(约定服务名和断言规则都从nacos获取)

server:port: 8090
# gateway配置
spring:application:name: api-gatewaycloud:#nacos配置nacos:discovery:server-addr: 192.168.184.15:8848username: nacospassword: nacos#gateway配置gateway:discovery:locator:enabled: true #是否启动自动识别nacos服务(约定大于配置)
  • 测试
    此时访问:http://localhost:8090/order-service/order/buyProduct
    在这里插入图片描述

这篇关于springCloudAlibaba之分布式网关组件---gateway的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1068762

相关文章

Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式

《Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式》本文详细介绍如何使用Java通过JDBC连接MySQL数据库,包括下载驱动、配置Eclipse环境、检测数据库连接等关键步骤,... 目录一、下载驱动包二、放jar包三、检测数据库连接JavaJava 如何使用 JDBC 连接 mys

SpringBoot线程池配置使用示例详解

《SpringBoot线程池配置使用示例详解》SpringBoot集成@Async注解,支持线程池参数配置(核心数、队列容量、拒绝策略等)及生命周期管理,结合监控与任务装饰器,提升异步处理效率与系统... 目录一、核心特性二、添加依赖三、参数详解四、配置线程池五、应用实践代码说明拒绝策略(Rejected

一文详解SpringBoot中控制器的动态注册与卸载

《一文详解SpringBoot中控制器的动态注册与卸载》在项目开发中,通过动态注册和卸载控制器功能,可以根据业务场景和项目需要实现功能的动态增加、删除,提高系统的灵活性和可扩展性,下面我们就来看看Sp... 目录项目结构1. 创建 Spring Boot 启动类2. 创建一个测试控制器3. 创建动态控制器注

Java操作Word文档的全面指南

《Java操作Word文档的全面指南》在Java开发中,操作Word文档是常见的业务需求,广泛应用于合同生成、报表输出、通知发布、法律文书生成、病历模板填写等场景,本文将全面介绍Java操作Word文... 目录简介段落页头与页脚页码表格图片批注文本框目录图表简介Word编程最重要的类是org.apach

Spring Boot中WebSocket常用使用方法详解

《SpringBoot中WebSocket常用使用方法详解》本文从WebSocket的基础概念出发,详细介绍了SpringBoot集成WebSocket的步骤,并重点讲解了常用的使用方法,包括简单消... 目录一、WebSocket基础概念1.1 什么是WebSocket1.2 WebSocket与HTTP

SpringBoot+Docker+Graylog 如何让错误自动报警

《SpringBoot+Docker+Graylog如何让错误自动报警》SpringBoot默认使用SLF4J与Logback,支持多日志级别和配置方式,可输出到控制台、文件及远程服务器,集成ELK... 目录01 Spring Boot 默认日志框架解析02 Spring Boot 日志级别详解03 Sp

java中反射Reflection的4个作用详解

《java中反射Reflection的4个作用详解》反射Reflection是Java等编程语言中的一个重要特性,它允许程序在运行时进行自我检查和对内部成员(如字段、方法、类等)的操作,本文将详细介绍... 目录作用1、在运行时判断任意一个对象所属的类作用2、在运行时构造任意一个类的对象作用3、在运行时判断

java如何解压zip压缩包

《java如何解压zip压缩包》:本文主要介绍java如何解压zip压缩包问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java解压zip压缩包实例代码结果如下总结java解压zip压缩包坐在旁边的小伙伴问我怎么用 java 将服务器上的压缩文件解压出来,

SpringBoot中SM2公钥加密、私钥解密的实现示例详解

《SpringBoot中SM2公钥加密、私钥解密的实现示例详解》本文介绍了如何在SpringBoot项目中实现SM2公钥加密和私钥解密的功能,通过使用Hutool库和BouncyCastle依赖,简化... 目录一、前言1、加密信息(示例)2、加密结果(示例)二、实现代码1、yml文件配置2、创建SM2工具

Spring WebFlux 与 WebClient 使用指南及最佳实践

《SpringWebFlux与WebClient使用指南及最佳实践》WebClient是SpringWebFlux模块提供的非阻塞、响应式HTTP客户端,基于ProjectReactor实现,... 目录Spring WebFlux 与 WebClient 使用指南1. WebClient 概述2. 核心依