热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何在微服务项目中集成springcloudgateway(超详细)

如何在微服务项目中集成springgateway前提:之前我是一直在维护我的自己的一个微服务项目,使用的是s



如何在微服务项目中集成spring gateway


前提:之前我是一直在维护我的自己的一个微服务项目,使用的是spring cloud这个微服务框架,在这个项目,我实践了以下技术及知识:
探索微服务项目的组成,
探索微服务项目的pom文件该如何管理、
集成dubbo、
探索定时任务、
探索前后端跨域、
微服务集成redis、
微服务集成rabbitmq、
设计秒杀流程防止超卖、
以及对秒杀的优化、
探索spring data jpa的集成和使用、
探索auth模块,
探索gateway模块的作用、
探索如何在微服务集成gateway模块,并 实现管理转发所有接口 。。。。


可以说,这个项目就是我的成长史,所有的技术,框架,对架构的理解,都来自这个我自己维护的项目

好了,接下来是具体细节:


1.在项目中创建一个gateway模块,如下:

在这里插入图片描述


2.pom文件

<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
</dependencies>


3.bootstrap.yml文件配置

在这里插入图片描述

spring:
cloud:
gateway:
routes:
- id: gateway # 路由的id,没有规定规则但要求唯一,建议配合服务名
#匹配后提供服务的路由地址
uri: http://localhost:10001
predicates:
- Path=/user/** # 断言,路径相匹配的进行路由(注意**为通配符)
server:
port: 10003


4.GateWayApplication启动类

在这里插入图片描述


5.postmain测试是否成功

http://localhost:10001/user/queryByUser?pageNum=1&pageSize=1

在这里插入图片描述
使用gateway网关的端口访问
在这里插入图片描述


目前只是配置一个模块,还看不出gateway的作用,那如果有多个模块呢

在这里插入图片描述

server:
port: 10003
spring:
cloud:
gateway:
routes:
- id: user # 路由的id,没有规定规则但要求唯一,建议配合服务名
uri: http://localhost:10001 # 匹配后提供服务的路由地址
predicates:
- Path=/user/** # 断言,路径相匹配的进行路由(注意**为通配符)
- id: product
uri: http://localhost:10002
predicates:
- Path=/product/**
- id: killOrder
uri: http://localhost:10002
predicates:
- Path=/killOrder/**

其实如果想要对某一个模块(端口)的全部路径进行开放,可以直接在uri中写:/**即可
比如:

- id: product
uri: http://localhost:10002
predicates:
- Path=/** #这样写就是对10002端口下的所有接口进行转发


也许有些人就会疑惑了,设置这个gateway干嘛用呀,他有啥作用啊?


这是我刚接触gateway时最大的疑问,我一直认为,只有知道一个东西的具体作用,或者说为什么要在项目中加这么一个模块,才能让人学的更快,更清晰,记的也更加牢固


    1.首先,如果有了gateway,那么,我们无论有多少个模块,无论每个模块的端口号是多少,我们只需要用gateway的端口号访问就可以了,我们就不需要记住各种模块的端口号了。

这只是gateway最基本的作用,gateway最重要的作用就是可以对所有的接口访问,在进入controller层之前进行拦截,处理。

   2.为什么要拦截?举几个我遇到的例子,比如用户体系中的token,没有gateway,你就得在每一个接口中对token进行生成,处理,和验证。可以毫不夸张的说,gateway是token实现的前提。

   3.再举个例子哈,比如跨域配置,我们知道,每一个前后端分离项目,第一个要处理的就是跨域问题,否则根本无法将前后端项目联系起来,至于什么是跨域,看这里:
spring boot前后端分离项目如何解决跨域问题,提供三种方法:
https://blog.csdn.net/yuanchangliang/article/details/108441273

如果没有gateway,那么在后端配置跨域,要么就在每一个模块中都写一个跨域配置类,要么就在每一个controller类上面都使用注解进行配置,简直太麻烦了。

如果有了gateway呢,我们只需要在gateway模块写一个跨域配置类即可,简单又优雅。

你们如果有什么问题,欢迎随时问我

-------我是道祖且长,一个在互联网苟且偷生的Java程序员



推荐阅读
  • 本文深入探讨了Spring Cloud Eureka在企业级应用中的高级使用场景及优化策略。首先,介绍了Eureka的安全配置,确保服务注册与发现过程的安全性。接着,分析了Eureka的健康检查机制,提高系统的稳定性和可靠性。随后,详细讨论了Eureka的各项参数调优技巧,以提升性能和响应速度。最后,阐述了如何实现Eureka的高可用性部署,保障服务的连续性和可用性。通过这些内容,开发者可以更好地理解和运用Eureka,提升微服务架构的整体效能。 ... [详细]
  • 在CentOS上部署和配置FreeSWITCH
    在CentOS系统上部署和配置FreeSWITCH的过程涉及多个步骤。本文详细介绍了从源代码安装FreeSWITCH的方法,包括必要的依赖项安装、编译和配置过程。此外,还提供了常见的配置选项和故障排除技巧,帮助用户顺利完成部署并确保系统的稳定运行。 ... [详细]
  • 本文详细介绍了如何在Linux系统中搭建51单片机的开发与编程环境,重点讲解了使用Makefile进行项目管理的方法。首先,文章指导读者安装SDCC(Small Device C Compiler),这是一个专为小型设备设计的C语言编译器,适合用于51单片机的开发。随后,通过具体的实例演示了如何配置Makefile文件,以实现代码的自动化编译与链接过程,从而提高开发效率。此外,还提供了常见问题的解决方案及优化建议,帮助开发者快速上手并解决实际开发中可能遇到的技术难题。 ... [详细]
  • Ceph API微服务实现RBD块设备的高效创建与安全删除
    本文旨在实现Ceph块存储中RBD块设备的高效创建与安全删除功能。开发环境为CentOS 7,使用 IntelliJ IDEA 进行开发。首先介绍了 librbd 的基本概念及其在 Ceph 中的作用,随后详细描述了项目 Gradle 配置的优化过程,确保了开发环境的稳定性和兼容性。通过这一系列步骤,我们成功实现了 RBD 块设备的快速创建与安全删除,提升了系统的整体性能和可靠性。 ... [详细]
  • 在《孙鑫VC++讲座笔记第三讲》中,深入探讨了MFC应用程序的架构,并详细解析了SDI程序的流程图。AfxWinMain()函数位于WINMAIN.CPP文件中,其主要职责包括调用AfxWinInit()进行框架初始化,以及通过pApp->InitApplication()执行应用内部的初始化过程。此外,还详细分析了各个关键函数的作用及其在程序启动过程中的具体功能。 ... [详细]
  • 如何在Java中高效构建WebService
    本文介绍了如何利用XFire框架在Java中高效构建WebService。XFire是一个轻量级、高性能的Java SOAP框架,能够简化WebService的开发流程。通过结合MyEclipse集成开发环境,开发者可以更便捷地进行项目配置和代码编写,从而提高开发效率。此外,文章还详细探讨了XFire的关键特性和最佳实践,为读者提供了实用的参考。 ... [详细]
  • Go语言实现Redis客户端与服务器的交互机制深入解析
    在前文对Godis v1.0版本的基础功能进行了详细介绍后,本文将重点探讨如何实现客户端与服务器之间的交互机制。通过具体代码实现,使客户端与服务器能够顺利通信,赋予项目实际运行的能力。本文将详细解析Go语言在实现这一过程中的关键技术和实现细节,帮助读者深入了解Redis客户端与服务器的交互原理。 ... [详细]
  • 本文提供了 RabbitMQ 3.7 的快速上手指南,详细介绍了环境搭建、生产者和消费者的配置与使用。通过官方教程的指引,读者可以轻松完成初步测试和实践,快速掌握 RabbitMQ 的核心功能和基本操作。 ... [详细]
  • 本文推荐了六款高效的Java Web应用开发工具,并详细介绍了它们的实用功能。其中,分布式敏捷开发系统架构“zheng”项目,基于Spring、Spring MVC和MyBatis技术栈,提供了完整的分布式敏捷开发解决方案,支持快速构建高性能的企业级应用。此外,该工具还集成了多种中间件和服务,进一步提升了开发效率和系统的可维护性。 ... [详细]
  • 掌握PHP框架开发与应用的核心知识点:构建高效PHP框架所需的技术与能力综述
    掌握PHP框架开发与应用的核心知识点对于构建高效PHP框架至关重要。本文综述了开发PHP框架所需的关键技术和能力,包括但不限于对PHP语言的深入理解、设计模式的应用、数据库操作、安全性措施以及性能优化等方面。对于初学者而言,熟悉主流框架如Laravel、Symfony等的实际应用场景,有助于更好地理解和掌握自定义框架开发的精髓。 ... [详细]
  • 深入解析Tomcat:开发者的实用指南
    深入解析Tomcat:开发者的实用指南 ... [详细]
  • 在 Linux 系统中,`/proc` 目录实现了一种特殊的文件系统,称为 proc 文件系统。与传统的文件系统不同,proc 文件系统主要用于提供内核和进程信息的动态视图,通过文件和目录的形式呈现。这些信息包括系统状态、进程细节以及各种内核参数,为系统管理员和开发者提供了强大的诊断和调试工具。此外,proc 文件系统还支持实时读取和修改某些内核参数,增强了系统的灵活性和可配置性。 ... [详细]
  • 深入解析零拷贝技术(Zerocopy)及其应用优势
    零拷贝技术(Zero-copy)是Netty框架中的一个关键特性,其核心在于减少数据在操作系统内核与用户空间之间的传输次数。通过避免不必要的内存复制操作,零拷贝显著提高了数据传输的效率和性能。本文将深入探讨零拷贝的工作原理及其在实际应用中的优势,包括降低CPU负载、减少内存带宽消耗以及提高系统吞吐量等方面。 ... [详细]
  • PyQt5 QTextEdit:深入解析Python中多功能GUI库的应用与实现
    本文详细探讨了 PyQt5 中 QTextEdit 组件在 Python 多功能 GUI 库中的应用与实现。PyQt5 是 Qt 框架的 Python 绑定,提供了超过 620 个类和 6000 个函数及方法,广泛应用于跨平台应用程序开发。QTextEdit 作为其中的重要组件,支持丰富的文本编辑功能,如富文本格式、文本高亮和自定义样式等。PyQt5 的流行性不仅在于其强大的功能,还在于其易用性和灵活性,使其成为开发复杂用户界面的理想选择。 ... [详细]
  • 本课程详细解析了Spring AOP的核心概念及其增强机制,涵盖前置增强、后置增强和环绕增强等类型。通过具体示例,深入探讨了如何在实际开发中有效运用这些增强技术,以提升代码的模块化和可维护性。此外,还介绍了Spring AOP在异常处理和性能监控等场景中的应用,帮助开发者更好地理解和掌握这一强大工具。 ... [详细]
author-avatar
钟z4z萍
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有