一、API 网关功能:

  1. 路由到指定位置:后台管理系统经常给各个服务发送请求,某一个服务掉线了,我们不可能手动去修改端口号,让它去其他机器找。因此,需要 API 网关,让其帮助我们将请求路由到正确位置。
  2. 进行鉴权等操作:网关也能帮助我们进行鉴权,网关层可对统一的请求进行处理。

二、SpringCloud GateWay 简介

GateWay 网关是 SpringCloud 官方推出并维护的网关中间件,其具有优越的性能,得到了业内的广泛肯定,我们在项目中也使用其作为我们的网关。

  1. 基本概念
  • 路由(Route): 我们发请求给网关,网关帮我们路由到指定位置
  • 断言(Predicate):请求发给 API 网关,API 网关进行条件判断路由到指定位置,这个条件判断就是断言
  • 过滤器(Filter): 请求过来,先进行过滤,在过滤器中,可对请求进行修改。
  1. 工作流程

上图总结:
请求到达网关,网关利用断言判断请求是否符合路由规则,若符合,路由到指定地方。在路由到指定地方的过程中需要进行一系列的过滤器进行过滤。


三、SpringCloud GateWay 的使用

在本节主要介绍如何实现使用 SpringBoot 框架整合 GateWay 实现到路由到指定位置

  1. 启动 Nacos 服务器 —— 对Nacos 不熟悉的建议移步到 Nocas的使用

  2. 新建一微服务模块,添加 GateWay 依赖,并开启服务的注册发现

  • 使用 Spring Initializr 新建微服务模块,勾选添加 GateWay 依赖

  • 通过在 SpringBoot 项目启动类中加入 @EnableDiscoveryClient 注释,开启服务的注册与发现
  1. 配置 Nocos 注册中心地址

新建 bootstrap.properties 文件,加入如下配置

spring.application.name=mall-gateway # 此处添加你的项目名
spring.cloud.nacos.config.server-addr=127.0.0.1:8848 # 此处添加你的 Nacos 服务器地址
spring.cloud.nacos.config.namespace=2e7e2d21-70fd-4e1c-b24e-a1c9c94e63b4 # 此处添加你为该网关服务新建的命名空间 id (不重要,根据你的情况绝对要不要新建命名空间,不写使用使用默认的命名空间)
  1. 启动项目,在 application.yml 配置文件中编写如下断言进行测试
spring:cloud:gateway:routes:- id:  baidu_route # 当前路由的 iduri: https://www.baidu.com # 路由到的地址predicates: # 路由断言,满足该断言才能路由到指定位置(断言为数组,因此使用 -)- Query=url, baidu # Query 断言要求包含参数 url, 并且参数值匹配正则表达式- id: qq_route # 测试二uri: https://www.qq.compredicates:- Query=url, qq

在浏览器中输入如下 url 进行测试,表示包含参数url,并且参数的值为 baidu (注:我的项目启动端口号是 88, 你根据自己的启动端口号写就 ok )


踩坑:

  1. 报错:
    Parameter 0 of method modifyRequestBodyGatewayFilterFactory in org.springframework.cloud.gateway.config.GatewayAutoConfiguration required a bean of type ‘org.springframework.http.codec.ServerCodecConfigurer’ that could not be found.

  2. 解决方式:
    该错误是由于 gateway 和 spring-webmvc 不兼容导致的,在 pom 文件依赖中去掉 spring-webmvc 依赖,如果是引入的全局依赖,使用如下方式排除 spring-webmvc 即可

     <dependency><groupId>com.wanqing.mall</groupId><artifactId>mall-common</artifactId><version>0.0.1-SNAPSHOT</version><exclusions><exclusion><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId></exclusion></exclusions></dependency>

尾注: 蓝色是象征冷静的颜色,在一段时间的苦痛之后,我仿佛又活过来了,这一路,感谢支持我鼓励我的人陪伴,让我们大家一起加油!一个人的力量和渺小,但是一群人可以改变时间。当然回到这篇文章,如果有不明白的问题,欢迎大家评论交流,我看见了就会回复的,谢谢大家**


【微服务】GateWay概念与使用相关推荐

  1. 网关与微服务的概念及在微服务架构中的作用详解

    网关的概念 网关(gateway),又称为网间连接器.协议转换器: 网关是在采用不同体系结构或协议的网络之间进行互通时,用于提供协议转换.路由选择.数据交换等网络兼容功能的设施: 网关在传输层上以实现 ...

  2. spring cloud eureka 服务之间调用_Spring-cloud微服务实战【一】:微服务的概念与演进过程...

    本文是一个系列文章,主要讲述使用spring-cloud进行微服务开发的实战.在开始之前,我们先说一下从传统的单一部署架构到微服务的发展过程,以便让童鞋们更好的理解微服务的概念与演进过程. 1.单体架 ...

  3. 集群、分布式、微服务的概念及异同

    一.什么是集群? 集群是指将多台服务器集中在一起,每台服务器都实现相同的业务,做相同的事:但是每台服务器并不是缺一不可,存在的主要作用是缓解并发能力和单点故障转移问题. 集群主要具有以下特征: (1) ...

  4. gateway sentinel 熔断 不起作用_微服务Gateway新一代网关

    上篇: https://zhuanlan.zhihu.com/p/183930681​zhuanlan.zhihu.com 一.概述简介 1.官网 上一代zuul 1.x:Netflix/zuul 当 ...

  5. SpringCloud Hoxton版微服务- Gateway网关

    Gateway网关 一.Gateway概念 二.三大核心概念 1.Route (路由) 2.Predicate (断言) 3.Filter (过滤) 三.工作流程图 四.工程搭建 1.新建Gatewa ...

  6. springcloud---微服务/微服务架构概念,优缺点。

    从技术维度理解: 微服务化的核心就是将传统的一站式应用,根据业务拆分成一个一个的服务,彻底 地去耦合,每一个微服务提供单个业务功能的服务,一个服务做一件事, 从技术角度看就是一种小而独立的处理过程,类 ...

  7. SpringCloud微服务的概念介绍

    文章目录 一.微服务相关概念 1.什么是微服务? 2.微服务与单体架构区别 二.Spring Cloud相关概念 1.什么是Spring Cloud? 2.Spring Cloud和SpringBoo ...

  8. 分布式服务架构与微服务架构概念的区别与联系是怎样的

    分布式:分散压力. 微服务:分散能力. 当下理解 分布式: 不同模块部署在不同服务器上 作用:分布式解决网站高并发带来问题 集群:相同的服务 多台服务器部署相同应用构成一个集群 作用:通过负载均衡设备 ...

  9. 微服务(概念篇)| 什么是微服务?

    本章目录 前言 一.微服务介绍 1.什么是微服务 微服务由来 为什么需要微服务? 3.1 早期的单体架构带来的问题 3.2 微服务与单体架构区别 3.3 微服务与SOA区别 微服务本质 什么样的项目适 ...

  10. 从微服务基本概念到核心组件-通过一个实例来讲解和分析

    概念模型为何如此重要? 最近我思考比较多的一个词就是概念模型,不管新知识的学习,新事物的认知,新领域的快速切入还是面对新问题的快速分析和解决,认识和理解概念模型都是相当重要的一个步骤. 概念模型本身是 ...

最新文章

  1. UNICODE_STRING 总结
  2. you must reset your password using alter table
  3. mysql测试表格的年龄的语句是_MySQL查询语句练习题,测试基本够用了
  4. linux下log日志乱码_如何用 Linux 技巧大大提高工作效率?
  5. Linux(3) 用户管理
  6. python二次开发ug_CAD二次开发(UG/Proe/其他) - 随笔分类 - 白途思 - 博客园
  7. 【antd 3.x】upload上传组件预览pdf格式文件和下载ofd格式文件
  8. C#资源文件的使用实例
  9. 作为使用者对qq拼音输入法和搜狗输入法的评价
  10. 游戏服务器的常用架构
  11. 【爬虫】Web Scraper正则表达式
  12. 双基因突变患者_宁夏发现世界首例双基因突变病例 患者矮小
  13. 迪士尼鳄鱼洗澡背后的传奇人物:哥以前是干DJ的!
  14. 苹果xr十大隐藏功能_别再说苹果“悬浮球”功能不好用,隐藏的实用小技巧,每天用得上...
  15. Ebox还没到,可怎么办呢
  16. 计算机编程oop思想与老子道德经之无有万物
  17. Linux【实操篇】—— 日志管理
  18. 【高电复习4】角度调制与解调
  19. Ubuntu12.04虚拟机下安装USB转串口驱动(PL2303)
  20. 【笔记】四大CPU体系结构ARM、X86/Atom、MIPS、PowerPC

热门文章

  1. 数值模拟使用matlab实现案例
  2. Cookie重名问题处理
  3. 学习python-mysql:报错AttributeError: module 'MySQLdb' has no attribute 'cursors'
  4. html表单的基本结构
  5. Spyder 打开失败问题解决
  6. Android实战技巧之十:获得屏幕物理尺寸、密度及分辨率
  7. GoldenGate—日常管理
  8. php 直接上传到七牛云,七牛云存储-如何使用php上传大文件到七牛云储?
  9. 抖音SEO优化源码,企业号搜索排名系统,技术理论分析搭建。
  10. 极客HTTP协议学习笔记破冰篇(1-7)