首页 > 其他分享 >SpringCloud(三)统一网关 -- GateWay

SpringCloud(三)统一网关 -- GateWay

时间:2024-03-28 12:47:22浏览次数:21  
标签:网关 请求 -- SpringCloud nacos 路由 spring gateway cloud

gateway官网:https://cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.2.1.RELEASE/reference/html/

 

我们为什么选择Gatway?:

neflix不太靠谱,zuul2.0一直跳票,迟迟不发布

​ 一方面因为Zuul1.0已经进入了维护阶段,而且Gateway是SpringCloud团队研发的,是亲儿子产品,值得信赖。而且很多功能Zuul都没有用起来也非常的简单便捷。 ​ Gateway是基于异步非阻塞模型上进行开发的,性能方面不需要担心。虽然Netflix早就发布了最新的Zuul 2.x,但Spring Cloud貌似没有整合计划。而且Netflix相关组件都宣布进入维护期;不知前景如何 ? 多方面综合考虑Gateway是很理想的网关选择。

 

 

网关的作用:

1、对用户请求做身份认证、权限校验

2、将用户请求路由到微服务,并实现负载均衡

3、对用户请求做限流

 

 

Gateway三大核心概念

Route(路由)

​ 路由是构建网关的基本模块,它由ID,目标URI,一系列的断言和过滤器组成,如果断言为true则匹配该路由

Predicate(断言工厂):

​ 参考的是java8的java.util.function.Predicate开发人员可以匹配HTTP请求中的所有内容(例如请求头或请求参数),如果请求与断言相匹配则进行路由

Filter(过滤)

​ 指的是Spring框架中GatewayFilter的实例,使用过滤器,可以在请求被路由前或者之后对请求进行修改。

总体:

  • web请求,通过一些匹配条件,定位到真正的服务节点。并在这个转发过程的前后,进行一些精细化控制。
  • predicate就是我们的匹配条件;
  • flter,就可以理解为一个无所不能的拦截器。有了这两个元素,再加上目标uri,就可以实现一个具体的路由了

 

 

搭建网关服务

基本使用只配置 1、2 步就可以

1、创建新的module,引入SpringCloudGateway网关依赖和nacos的服务发现依赖。

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

2、编写路由配置及nacos地址

server:
  port: 10010
logging:
  level:
    cn.itcast: debug
  pattern:
    dateformat: MM-dd HH:mm:ss:SSS
spring:
  application:
    name: gateway
  cloud:
    nacos:
      server-addr: nacos:8848 # nacos地址
    gateway:
      routes:
        - id: user-service # 路由标示,必须唯一
          uri: lb://userservice # 路由的目标地址
          predicates: # 路由断言,判断请求是否符合规则
            - Path=/user/** # 路径断言,判断路径是否是以/user开头,如果是则符合
        - id: order-service
          uri: lb://orderservice
          predicates:
            - Path=/order/**
yml内相关配置

3、其它配置

1)路由断言工厂 (可以去官网 4.N去找相应的案例)

 使用方法:

 

 

2)路由过滤器

server:
  port: 10010
logging:
  level:
    cn.itcast: debug
  pattern:
    dateformat: MM-dd HH:mm:ss:SSS
spring:
  application:
    name: gateway
  cloud:
    nacos:
      server-addr: nacos:8848 # nacos地址
    gateway:
      routes:
        - id: user-service # 路由标示,必须唯一
          uri: lb://userservice # 路由的目标地址
          predicates: # 路由断言,判断请求是否符合规则
            - Path=/user/** # 路径断言,判断路径是否是以/user开头,如果是则符合
        - id: order-service
          uri: lb://orderservice
          predicates:
            - Path=/order/**
      default-filters:
        - AddRequestHeader=Truth,Itcast is freaking awesome!
yml内相关配置

 

 

 

 

 

GateWay工作流程:

 

标签:网关,请求,--,SpringCloud,nacos,路由,spring,gateway,cloud
From: https://www.cnblogs.com/JoeYD/p/18101359

相关文章

  • Docker Gitlab使用方法
    下载dockerpullgitlab/gitlab-ce运行dockerrun\--publish443:443--publish80:80--publish22:22\--namegitlab\-v/data/gitlab/config:/etc/gitlab\-v/data/gitlab/logs:/var/log/gitlab\-v/data/gitlab/data:/var/opt/gitlab\gitla......
  • L2-044 大众情人
    测试点4一开始没过去,以为是数据范围的问题。找半天才发现是floyd三层循环k那个写反了,害。#include<bits/stdc++.h>usingnamespacestd;vector<int>male,female;intdis[510][510];intmain(){ memset(dis,0x3f,sizeof(dis)); intn; cin>>n; for(inti=1;i......
  • 【Canal】Canal+Kafka实现数据同步
    canal介绍参考:【Canal】Canal快速入门Kafka准备参考:【Kafka】Kafka安装(一) + 【Kafka】Kafka-UI安装启动canal-server参考:https://github.com/alibaba/canal/wiki/Canal-Kafka-RocketMQ-QuickStart下载canal,访问 release页面 ,选择需要的包下载,如......
  • [Kubernetes] Kubenetes CLI
    CommandDescriptionkubectlautoscaledeploymentAutoscalesaKubernetesDeployment.kubectlcreateconfigmapCreatesaConfigMapresource.kubectlgetdeployments-owideListsdeploymentswithdetails.kubectlgethpaListsHorizontalPodAutoscal......
  • webpack 3 入门笔记
    生产/开发环境生产环境便于开发求方便开发环境便于部署求小体积小项目:用环境名if(evn===proudtion){}else{}大项目:dev(mergecommon),prod(mergecommon)三个文件通过script指令rundev和runbuild--config不同的配置文件。****开发环境:1公共变量2tr......
  • 【运维】在阿里云上搭建自己的图床,配合PicGo和Typora使用
    本文将详细介绍如何在阿里云上搭建自己的图床,包括购买OSS服务、配置域名解析、创建OSS存储桶和设置图片上传规则等步骤。希望对您有所帮助!一、购买OSS服务首先,我们需要在阿里云官网购买OSS(ObjectStorageService)服务。OSS是阿里云提供的一种海量、安全、低成本、高可靠的云存......
  • ffmpeg学习window下使用Visual Studio创建cpp项目添加ffmpeg源代码编译好的依赖库
    ffmpeg学习window下使用VisualStudio创建cpp项目添加ffmpeg源代码编译好的依赖库1.创建cpp项目启动VisualStudio,创建新项目选择控制台运用程序随便输入一个项目名称,点击创建,完成helloworld项目的创建编译和运行项目,按f7编译项目,按f5运行项目下次重新打开......
  • PgSql 知识库
    --分页offset和limit位置可以互换不影响结果select*fromjinxudong.t_studentoffset0limit2;select*fromjinxudong.t_studentlimit2offset0;--表明加别名用as不用as都可以select*fromjinxudong.t_studentasawherea.id<23limit2offset0;sele......
  • 使用Aihubmix API 服务中遇到错误与解决
    HTTPcode200fromAPI(<!doctypehtml><htmllang="en"><head><metacharset="utf-8"/><linkrel="icon"href="https://yinchao.oss-cn-hangzhou.aliyuncs.com/orisoundlogo.jpg"/><metaname=......
  • STS中maven项目打包报错: No compiler is provided in this environment. Perhaps you
    这个报错的意思是在这个环境中没有编译环境,即不存在javac.exe,然后说一下JRE和JDK的区别:JRE(JavaRuntimeEnvironment):1、JRE是Java运行时环境,用于在计算机上运行Java程序。2、包含Java虚拟机(JVM)和Java核心类库,以及运行Java程序所需的其他支持文件。3、JRE通常用......