首页 > 其他分享 >Spring Gateway学习

Spring Gateway学习

时间:2024-09-28 17:48:52浏览次数:8  
标签:网关 Spring boot 学习 spring Gateway cloud

系列文章目录

JavaSE
基础知识、数据类型学习万年历项目代码逻辑训练习题
代码逻辑训练习题方法、数组学习图书管理系统项目
面向对象编程:封装、继承、多态学习封装继承多态习题常用类、包装类、异常处理机制学习
集合学习IO流、多线程学习仓库管理系统JavaSE项目
员工管理系统、多表查询、反射实现DBHelper学习DML、DDL、数据库对象学习
JavaWeb
网络编程、各种标签、CSS学习ECMAScript、BOM学习DOM、jQuery学习
Servlet、JSP、Cookie、Ajax学习融资管理系统JavaWeb项目
框架
MyBatis框架学习逆向工程、Spring框架IOC、AOP学习SpringMVC框架学习
SpringBoot框架学习招聘网站框架项目Vue介绍、窗体内操作、窗体间操作学习
Vue路由配置、网络请求访问框架项目、element组件介绍学习标准管理系统Vue项目
微服务
Linux安装、Nginx反向代理、负载均衡学习Docker学习Jenkins学习
Nexus学习Spring Security学习RabbitMQ学习
Redis学习MongoDB学习MongoDB学习
Nacos学习Spring Session学习Spring Gateway学习

文章目录


前言

本文我们要讲述:
Spring Gateway
在下攸攸太上,我要给你们介绍Spring Gateway。


一、Spring Gateway介绍

Spring Session是一个具有路由、断言和过滤器等核心功能的框架。它用于设置转发地址、判断真实应该请求什么地址,以及过滤地址和处理参数。

网关是后台服务的统一入口,类似于网络中的网关。在微服务架构中,网关是必备的服务,它提供统一的入口,解决跨域、负载均衡、微服务通信等问题,实现整体管理和通信。

使用网关的主要目的是实现请求转发。在没有网关的情况下,前端需要知道每个微服务的IP地址和端口才能发送请求,这样前端需要管理大量的微服务。此外,前端无法进行负载均衡,无法确定请求应该发送到哪个微服务实例。通过使用网关,前端只需要知道网关的地址,然后通过反向代理将请求转发给网关。网关在内部通过集成负载均衡器来选择合适的微服务实例处理请求。

对于前端来说,发送的请求不是直接到网关的地址,而是通过Nginx等反向代理到达网关。这样,前端只需要知道反向代理服务器(如Nginx)的地址,而不需要直接暴露网关的地址。

一般情况下,网关会作为一个独立的微服务存在,为了实现请求转发和整体管理。通过使用网关,可以简化前端的工作,实现负载均衡,提高系统的可扩展性和管理性。

二、设置Spring Gateway

1. 启动Nacos

docker start nacos

在这里插入图片描述

2. 创建Maven项目

在这里插入图片描述

3. 添加依赖

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.7.RELEASE</version>
    </parent>

    <properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <spring-boot.version>2.6.13</spring-boot.version>
        <jwt.version>0.7.0</jwt.version>
        <fastjson.version>1.2.60</fastjson.version>
        <spring-cloud-alibaba.version>2.0.3.RELEASE</spring-cloud-alibaba.version>
        <spring-cloud.version>Finchley.SR2</spring-cloud.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring-cloud-alibaba.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <classifier>exec</classifier>
                </configuration>
            </plugin>
        </plugins>
    </build>

4. 编写bootstrap.yml配置文件

spring:
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.219.186:8848
      config:
        server-addr: 192.168.219.186:8848

    inetutils:
      preferred-networks: 192.168.56

server-addr代表自己的虚拟机地址

5. 编写application.properties配置文件

注意不要有空格、注释啥的

spring.application.name=gateway
server.port=300

6. 编写SpringBootMain文件

package com.jjy;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringBootMain {

    public static void main(String[] args) {
        SpringApplication.run(SpringBootMain.class,args);
    }
}

7. 启动后,访问Nacos

在服务管理的服务列表下能看到本项目的服务
在这里插入图片描述

三、网关配置

1. 注释依赖

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

2. 添加依赖

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>

在这里插入图片描述

2. 添加application.yml配置文件

spring:
  cloud:
    gateway:
      routes:
        - id: baidu_route
          uri: https://www.baidu.com
          predicates:
            - Query=baidu

3. 运行项目,访问百度

访问如下地址才能跳转百度http://localhost:300/baidu?baidu,后面的baidu代表Query=baidu,这个baidu可以写成别的然后网址问号后面写别的就可以
直接访问http://localhost:300/baidu无法访问,我已经吃过一次好奇心的亏了,你们不要去吃


总结

本文讲述了:
Spring Gateway:用于转发
在下攸攸太上,最近疯狂发文章,只是为了得到一周九篇才能拿到的劳模勋章,距离劳模勋章还差0篇!呜呼!!

标签:网关,Spring,boot,学习,spring,Gateway,cloud
From: https://blog.csdn.net/howwickhappy/article/details/142591854

相关文章

  • 深度学习入门
    目录深度学习定义深度学习的发展背景神经网络基础深度学习与传统机器学习的关系深度学习定义   深度学习是机器学习的一个分支,它模仿人脑处理数据和创建模式的方式,用于解决复杂的模式识别问题。与传统的机器学习方法相比,深度学习能够自动从原始数据中学习到更高层......
  • SpringBoot与MyBatis-Plus的整合与综合实例
    MyBatis是一款优秀的持久层框架,它支持定制化SQL、存储过程、以及高级映射。MyBatis3提供的注解可以取代XML。例如,使用注解@Select直接编写SQL完成数据查询。MyBatis-Plus是一个对MyBatis进行增强的工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生......
  • Springboot实战——黑马点评之秒杀优化
    Springboot实战——黑马点评之秒杀优化1秒杀优化先来复习以下,秒杀优惠券业务的现有实现逻辑:以上流程图中的操作串行执行,效率极低。其中判断秒杀库存以及校验一人一单属于对数据库的读取,耗时较少;扣减库存以及创建订单属于对数据库的写操作,耗时相对较久。提升效率的......
  • springboot基于java的酒店管理系统设计与实现(源码+文档+调试+vue+前后端分离)
    收藏关注不迷路!!......
  • Vue和Vite是什么关系呢?-----与java后端的Spring和Maven对照理解一下
    前端框架(FrontendFramework)前端框架是一组预定义的库、工具和约定,用于简化和加速Web应用程序的开发。它提供了一种结构化的方式来构建用户界面,并处理常见的任务,如状态管理、路由、组件化等。类比:后端框架Django(Python)或RubyonRails(Ruby)这些后端框架提供了......
  • java基于协同过滤算法的springboot的煤矿员工健康管理系统(源码+文档+调试+vue+前后端
    收藏关注不迷路!!......
  • d2l-ai深度学习日记(四)-深度学习计算
    前言:这个博客《d2l-ai深度学习日记》将记录我在深度学习领域的学习与探索,特别是基于《动手学深度学习》这本经典教材的学习过程。在这个过程中,我不仅希望总结所学,还希望通过分享心得,与志同道合的朋友一起交流成长。这不仅是对知识的沉淀,也是我备战研究生考试、追逐学术进阶之......
  • d2l-ai深度学习日记(三)-多层感知机
     前言:这个博客《d2l-ai深度学习日记》将记录我在深度学习领域的学习与探索,特别是基于《动手学深度学习》这本经典教材的学习过程。在这个过程中,我不仅希望总结所学,还希望通过分享心得,与志同道合的朋友一起交流成长。这不仅是对知识的沉淀,也是我备战研究生考试、追逐学术进阶......
  • Redis学习笔记
    一、Redis简介1.1NOSQLNoSQL(NoSQL=NotOnlySQL),意即“不仅仅是SQL”,是一项全新的数据库理念,泛指非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型,web2.0纯动态网站已经显得力不从心,暴露了很多难以克服......
  • 7、集成SpringSecurity安全框架---定义统一的响应对象类
    自定义/***@Description:TODO:定义统一的响应对象类*/@Data@AllArgsConstructor@NoArgsConstructorpublicclassResultVO<T>implementsSerializable{privatestaticfinallongserialVersionUID=-2548645345465031121L;privateIntegercode;pr......