• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

微服务GateWay概念和使用

武飞扬头像
刘婉晴
帮助1

一、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:  百度_route # 当前路由的 id
          uri: https://www.百度.com # 路由到的地址
          predicates: # 路由断言,满足该断言才能路由到指定位置(断言为数组,因此使用 -)
            - Query=url, 百度 # Query 断言要求包含参数 url, 并且参数值匹配正则表达式
            
        - id: qq_route # 测试二
          uri: https://www.qq.com
          predicates:
            - Query=url, qq

在浏览器中输入如下 url 进行测试,表示包含参数url,并且参数的值为 百度 (注:我的项目启动端口号是 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>

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


这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhfjagbi
系列文章
更多 icon
同类精品
更多 icon
继续加载