SpringCloud 组件Gateway服务网关【gateway快速入门】

news2025/8/8 5:32:14

目录

1:Gateway服务网关

1.1:为什么需要网关

1.2:gateway快速入门

1):创建gateway服务,引入依赖

2):编写启动类

3):编写基础配置和路由规则

4):重启测试

5):网关路由的流程图


1:Gateway服务网关

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

1.1:为什么需要网关

Gateway网关是我们服务的守门神,所有微服务的统一入口。

什么是网关的呢?

像上图的工作流程,用户将请求发送到微服务中,项目中的所有服务用户都可访问,一个项目中可是有些服务不能暴露出去访问的或者说有一定权限才能访问的,如果都可以访问,那势必会存在一定的安全性问题!那么怎么解决这个问题呢!则就引入了springCloud的组件,gateway(网关)进行解决!

网关的核心功能特性

  • 身份认证,权限控制(请求来了网关进行判断你是谁进行权限的判断,判断通过,网关放行到微服务中 !网关作为微服务入口,需要校验用户是是否有请求资格,如果没有则进行拦截。)

  • 服务路由,负载均衡(比如有个请求功能到网关了,网关能处理业务吗?肯定不能,网关需要把请求转发到微服务当中,比如user-service服务中去,这时网关就需要进行判断了,根据你的请求网关处理给你转接到具体的哪个服务这个过程被称为路由。
    同样一个服务可能有多个实例,网关同样会做负载均衡)

  • 请求限流(比如说一个游乐场,场区规定容纳两万人,结果到双休日了一下子来了四万人,这时守门员出手了,你们两万人先等等,里面已经达到容纳量了!类比于,微服务中每个服务可能每小时只能接收一万次请求,双十二突然增多,这些服务因为承载不了垮掉了,网关出手了,把多出请求的拦截下来,避免服务压力过大,保证程序的正常运转,这就是限制流量)

架构图:

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

  • gateway

  • zuul

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

1.2:gateway快速入门

下面,我们就演示下网关的基本路由功能。基本步骤如下:

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

  2. 编写启动类

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

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

1):创建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):编写启动类

@SpringBootApplication
@EnableDiscoveryClient
public class TestGetwayApplication {
    public static void main(String[] args) {
        SpringApplication.run(TestGetwayApplication.class,args);
    }
}

3):编写基础配置和路由规则

创建application.yml文件,内容如下:

#端口号
server:
  port: 10010
spring:
  application:
    name: test-gateway
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848   #nacos服务地址
    gateway:
      discovery:
        locator:
          enabled: true   #开启服务注册和发现的功能,自动创建router以服务名开头的请求路径转发到对应的服务
      routes:   # 网关路由配置
      - id: consumer                  #自定义,路由id,只要唯一即可
        uri: lb://service-consumer    #访问路径,路由的目标地址 lb是负载均衡,后面跟着服务名称
        predicates:                      #断言,也就是判断请求是否复合路由规则的条件
          - Path=/consumer/**            #这个是按照路径匹配,只要以/consumer/开头就符合要求

我们将符合Path 规则的一切请求,都代理到 uri参数指定的地址。

本例中,我们将 /consumer/**开头的请求,代理到lb://service-consumer,lb是负载均衡,根据服务名拉取服务列表,实现负载均衡。

 

4):重启测试

重启网关,访问http://localhost:10010/consumer/user/login时,符合/consumer/**规则,请求转发到uri:http://service-consumer/user/login/爱吃豆的土豆,得到了结果:

 


@RestController
@RequestMapping("/user")
public class UserController {
    @GetMapping("/login/{loginname}")
    @SentinelResource(value = "login" , blockHandler = "loginBlockHandler")
    public String login(@PathVariable("loginname") String str){
        return "登录成功"+ str;
    }

5):网关路由的流程图

整个访问的流程如下:

总结:

网关搭建步骤:

  1. 创建项目,引入nacos服务发现和gateway依赖

  2. 配置application.yml,包括服务基本信息、nacos地址、路由

路由配置包括:

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

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

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

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

 

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

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

相关文章

啥牌子的无线蓝牙耳机好用?无线蓝牙耳机推荐2022

蓝牙耳机这几年技术越好越高&#xff0c;其最大的魅力就是随时随地听音乐&#xff0c;无论是上下班还是日常使用&#xff0c;出门携带也方便&#xff0c;市面上的蓝牙耳机众多&#xff0c;很多人不知道该如何选择&#xff0c;下面整理了几款音质清晰&#xff0c;综合性能优秀的…

分享25个JSP源码,总有一款适合您

链接&#xff1a;https://pan.baidu.com/s/17ug7A_b2nHgu-x1K-GIVlQ?pwd6367 提取码&#xff1a;6367 下面是文件的名字&#xff0c;我放了一些图片&#xff0c;文章里不是所有的图主要是放不下...&#xff0c;大家下载后可以看到。 renren-security轻量级权限管理系统 renr…

Linux C应用编程-1-文件IO

1.open与close #include <stdio.h> //IO操作需要包含的头文件 #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h>char filename[] "text.txt";int main(void) {int fd;fd open(filename, O_RD…

systemd 252 如预期的锁定了 Linux 引导过程

导读今天给大家介绍一下systemd 252锁定 Linux 引导过程systemd 252 如预期的锁定了 Linux 引导过程 之前&#xff0c;我们 报道 过&#xff0c;systemd 创始人发文指出 Linux 引导过程不安全&#xff0c;并提出采用加密签名的统一内核镜像&#xff08;UKI&#xff09;&#x…

SA实战 · 《SpringCloud Alibaba实战》第02章-专栏设计

作者:冰河 星球:http://m6z.cn/6aeFbs 博客:https://binghe001.github.io 文章汇总:https://binghe001.github.io/md/all/all.html 大家好,我是冰河~~ 从今天开始,我们正式进入《SpringCloud Alibaba实战》专栏的学习,在《开篇》一文中,我们大体介绍了整个专栏的结构安…

html一个案例学会所有常用HTML(H5)标签

目录 前言 HTML5声明 HTML框架 head头部 声明编码格式 告诉IE浏览器&#xff0c;IE8/9及以后的版本都会以最高版本IE来渲染页面。 移动端适配 网站标题 网站正文 网站内容的组成 文字有关标签 音频视频标签 表单标签与input属性 前言 HTML没有什么难度&#xf…

计算机网络笔记6应用层

前言 站在巨人的肩膀上&#xff0c;让知识的获得更加容易&#xff01;本文为学习计算机网络后,自顶向下的学习笔记&#xff1b; 学习视频来源&#xff1a; 计算机网络微课堂&#xff08;有字幕无背景音乐版&#xff09;课件pdf来源&#xff1a;评论区up bili_68567544整理目录…

Linux(基于Centos7)(三)

文章目录一、任务介绍二、任务实施2-1、管理用户账号与密码2-2、用户组管理一、任务介绍 知识目标 1.了解用户角色的类型。 2.理解用户和用户组的关系。 3.了解用户账号文件、用户密码文件和用户组账号文件。 能力目标 1.能够通过命令来创建和管理用户与用户组。 2.能够通过命…

面向对象编程·下

面向对象编程下⭐小提问解答⭐3.多态3.1向上转型 - 父类引用子类对象3.1.1方法传参3.1.2方法返回3.2动态绑定3.3方法重写3.4理解多态3.5向下转型 - 子类引用父类对象3.6super 关键字3.7在构造方法中调用重写的方法(一个坑)3.8总结4.抽象类4.1语法规则4.2抽象类的作用5.接口5.1语…

基于2D连续图像序列的行人骨架关节角度估计

目 录 第1章 绪 论 1 1.1 行人骨架关节角度估计 1 1.2 行人骨架关节角度估计的应用领域 2 1.3 行人骨架关节角度估计方法简述 3 1.3. 1 基于概率统计的方法 3 1.3.2 基于语法的方法 4 1.3.3 基于模型的方法 4 1.4 行人骨架关节角度估计的难点和面临的挑战 5 1.5 本文的研究意义…

xinput1_4.dll丢失怎么修复?修复方法分享

对于电脑系统来说牵一发而动全身。电脑系统当中的任何一个小小的文件都关系着整个电脑系统的运行&#xff0c;大家都明白&#xff0c;电脑系统以及很多的大型系统软件都是安装在电脑C盘当中的&#xff0c;所以C盘也叫做系统盘&#xff0c;系统盘中有很多非常重要的软件&#xf…

【通用设计方法】之接收异常保护

目录 前言 一、接收异常保护 二、超短包、背靠背的支持 后记 前言 为了系统的鲁棒性&#xff0c;我们常常会做一系列的异常保护功能&#xff0c;避免系统挂死。 这里仅仅介绍接收保护的某些设计思路&#xff0c;抛砖引玉。 一、接收异常保护 设计思路&#xff1a;通过可配…

肠道微生物在天然产物生物转化中的潜在作用

谷禾健康 什么是天然产物&#xff1f; 天然产物是指动物、植物、昆虫或微生物体内的组成成分或其代谢产物以及人和动物体内许多内源性的化学成分&#xff0c;是自然产生的小分子。值得注意的是&#xff0c;天然产物来源中&#xff0c;植物来源占85%以上。 谷禾在这里主要介绍植…

【服务器数据恢复】某云ECS网站服务器mysql数据恢复案例

云服务器特点&#xff1a; 1、云服务器不需要购买硬件设备&#xff0c;用户按照业务需求支付一定的费用购买相应的硬软件资源。云服务器提供商的数据中心不仅提供硬件/软件环境&#xff0c;还提供咨询服务。 2、云服务器可以充分利用资源&#xff0c;根据业务需求随时调整硬软件…

前后端分离项目,vue+uni-app+php+mysql在线小说电子书阅读小程序系统设计与实现

功能介绍 用户首次登陆系统需要注册一个用户作为账号&#xff0c;用户在登录平台后&#xff0c;可以进行平台的操作。主要模块包括以下几点&#xff1a; 登录功能&#xff1a;注册普通账号登录&#xff1b;登录后可以修改用户的基本信息&#xff0c;也可以退出。 资讯功能&…

MySQL数据库优化总结

概述 本文所指的SQL优化主要是指MySQL优化&#xff0c;当然思想是通用的&#xff0c;其他SQL语言不排除其通用性。谈到SQL优化&#xff0c;最好有一个指导或者规范&#xff0c;照着这个规范去对比&#xff0c;发现可以优化的地方。参考博文MySQL推荐使用规范。 总体思路 优化…

移动端开发之混合开发模式优劣势综述

2020年&#xff0c;我国互联网行业实现快速发展&#xff0c;网民规模稳定增长。截至2020年底&#xff0c;我国5G网络用户数超过1.6亿&#xff0c;约占全球5G总用户数的89%。 截至2020年底&#xff0c;我国网民规模达9.89亿&#xff0c;互联网普及率达到70.4%。报告还显示&…

2022买护眼灯到底有没有用?双十二学生护眼灯该怎么选择

护眼台灯经过多年的发展&#xff0c;如今性能已经是非常不错了&#xff0c;护眼效果不能说百分之百可预防孩子近视&#xff0c;90%以上减少孩子近视的概率还是能轻松做到的&#xff0c;特别是一些主打专业护眼的台灯&#xff0c;效果极其明显出色。 学生护眼灯该怎样选择&…

echarts优秀使用案例

echarts优秀使用案例 App.vue <template><div class"box"><a-card size"small" title"各类型监测设备利用率" class"center"><!-- color 值由组件外部进行传递&#xff08;会重复修改的部分尽量减少逻辑复杂程度…

开源让这位 00 后逆袭成为各类大奖收割者

OpenI 启智社区在 2022 年推出的开源打榜活动&#xff0c;聚集了一帮非常活跃的开发者&#xff0c;上榜者覆盖了来自全国高校、科研机构、企业达 100 多家。其中&#xff0c;高校学生占 65%&#xff0c;近 60%的上榜者是 90 后&#xff0c;32%的上榜者是 00 后。真是 00 后浪推…