【微服务】GateWay概念与使用
一、API 网关功能:
- 路由到指定位置:后台管理系统经常给各个服务发送请求,某一个服务掉线了,我们不可能手动去修改端口号,让它去其他机器找。因此,需要 API 网关,让其帮助我们将请求路由到正确位置。
- 进行鉴权等操作:网关也能帮助我们进行鉴权,网关层可对统一的请求进行处理。
二、SpringCloud GateWay 简介
GateWay 网关是 SpringCloud 官方推出并维护的网关中间件,其具有优越的性能,得到了业内的广泛肯定,我们在项目中也使用其作为我们的网关。
- 基本概念
- 路由(Route): 我们发请求给网关,网关帮我们路由到指定位置
- 断言(Predicate):请求发给 API 网关,API 网关进行条件判断路由到指定位置,这个条件判断就是断言
- 过滤器(Filter): 请求过来,先进行过滤,在过滤器中,可对请求进行修改。
- 工作流程
上图总结:
请求到达网关,网关利用断言判断请求是否符合路由规则,若符合,路由到指定地方。在路由到指定地方的过程中需要进行一系列的过滤器进行过滤。
三、SpringCloud GateWay 的使用
在本节主要介绍如何实现使用 SpringBoot 框架整合 GateWay 实现到路由到指定位置
启动 Nacos 服务器 —— 对Nacos 不熟悉的建议移步到 Nocas的使用
新建一微服务模块,添加 GateWay 依赖,并开启服务的注册发现
- 使用 Spring Initializr 新建微服务模块,勾选添加 GateWay 依赖
- 通过在 SpringBoot 项目启动类中加入
@EnableDiscoveryClient
注释,开启服务的注册与发现
- 配置 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 (不重要,根据你的情况绝对要不要新建命名空间,不写使用使用默认的命名空间)
- 启动项目,在 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 )
踩坑:
报错:
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.解决方式:
该错误是由于 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概念与使用相关推荐
- 网关与微服务的概念及在微服务架构中的作用详解
网关的概念 网关(gateway),又称为网间连接器.协议转换器: 网关是在采用不同体系结构或协议的网络之间进行互通时,用于提供协议转换.路由选择.数据交换等网络兼容功能的设施: 网关在传输层上以实现 ...
- spring cloud eureka 服务之间调用_Spring-cloud微服务实战【一】:微服务的概念与演进过程...
本文是一个系列文章,主要讲述使用spring-cloud进行微服务开发的实战.在开始之前,我们先说一下从传统的单一部署架构到微服务的发展过程,以便让童鞋们更好的理解微服务的概念与演进过程. 1.单体架 ...
- 集群、分布式、微服务的概念及异同
一.什么是集群? 集群是指将多台服务器集中在一起,每台服务器都实现相同的业务,做相同的事:但是每台服务器并不是缺一不可,存在的主要作用是缓解并发能力和单点故障转移问题. 集群主要具有以下特征: (1) ...
- gateway sentinel 熔断 不起作用_微服务Gateway新一代网关
上篇: https://zhuanlan.zhihu.com/p/183930681zhuanlan.zhihu.com 一.概述简介 1.官网 上一代zuul 1.x:Netflix/zuul 当 ...
- SpringCloud Hoxton版微服务- Gateway网关
Gateway网关 一.Gateway概念 二.三大核心概念 1.Route (路由) 2.Predicate (断言) 3.Filter (过滤) 三.工作流程图 四.工程搭建 1.新建Gatewa ...
- springcloud---微服务/微服务架构概念,优缺点。
从技术维度理解: 微服务化的核心就是将传统的一站式应用,根据业务拆分成一个一个的服务,彻底 地去耦合,每一个微服务提供单个业务功能的服务,一个服务做一件事, 从技术角度看就是一种小而独立的处理过程,类 ...
- SpringCloud微服务的概念介绍
文章目录 一.微服务相关概念 1.什么是微服务? 2.微服务与单体架构区别 二.Spring Cloud相关概念 1.什么是Spring Cloud? 2.Spring Cloud和SpringBoo ...
- 分布式服务架构与微服务架构概念的区别与联系是怎样的
分布式:分散压力. 微服务:分散能力. 当下理解 分布式: 不同模块部署在不同服务器上 作用:分布式解决网站高并发带来问题 集群:相同的服务 多台服务器部署相同应用构成一个集群 作用:通过负载均衡设备 ...
- 微服务(概念篇)| 什么是微服务?
本章目录 前言 一.微服务介绍 1.什么是微服务 微服务由来 为什么需要微服务? 3.1 早期的单体架构带来的问题 3.2 微服务与单体架构区别 3.3 微服务与SOA区别 微服务本质 什么样的项目适 ...
- 从微服务基本概念到核心组件-通过一个实例来讲解和分析
概念模型为何如此重要? 最近我思考比较多的一个词就是概念模型,不管新知识的学习,新事物的认知,新领域的快速切入还是面对新问题的快速分析和解决,认识和理解概念模型都是相当重要的一个步骤. 概念模型本身是 ...
最新文章
- UNICODE_STRING 总结
- you must reset your password using alter table
- mysql测试表格的年龄的语句是_MySQL查询语句练习题,测试基本够用了
- linux下log日志乱码_如何用 Linux 技巧大大提高工作效率?
- Linux(3) 用户管理
- python二次开发ug_CAD二次开发(UG/Proe/其他) - 随笔分类 - 白途思 - 博客园
- 【antd 3.x】upload上传组件预览pdf格式文件和下载ofd格式文件
- C#资源文件的使用实例
- 作为使用者对qq拼音输入法和搜狗输入法的评价
- 游戏服务器的常用架构
- 【爬虫】Web Scraper正则表达式
- 双基因突变患者_宁夏发现世界首例双基因突变病例 患者矮小
- 迪士尼鳄鱼洗澡背后的传奇人物:哥以前是干DJ的!
- 苹果xr十大隐藏功能_别再说苹果“悬浮球”功能不好用,隐藏的实用小技巧,每天用得上...
- Ebox还没到,可怎么办呢
- 计算机编程oop思想与老子道德经之无有万物
- Linux【实操篇】—— 日志管理
- 【高电复习4】角度调制与解调
- Ubuntu12.04虚拟机下安装USB转串口驱动(PL2303)
- 【笔记】四大CPU体系结构ARM、X86/Atom、MIPS、PowerPC