网站首页 > 技术文章 正文
基本概念
- Spring Cloud Gateway
Spring Cloud Gateway是基于Spring生态系统之上构建的API网关,包括:Spring 5.x,Spring Boot 2.x和Project Reactor。Spring Cloud Gateway旨在提供一种简单而有效的方法来路由到API,并为它们提供跨领域的关注点,例如:安全性,监视/指标,限流等。
- 什么是服务网关
API Gateway(APIGW / API 网关),顾名思义,是系统对外的唯一入口。API网关封装了系统内部架构,为每个客户端提供定制的API。 近几年来移动应用与企业间互联需求的兴起。从以前单一的Web应用,扩展到多种使用场景,且每种使用场景对后台服务的要求都不尽相同。 这不仅增加了后台服务的响应量,还增加了后台服务的复杂性。随着微服务架构概念的提出,API网关成为了微服务架构的一个标配组件。
- 为什么要使用网关
微服务的应用可能部署在不同机房,不同地区,不同域名下。此时客户端(浏览器/手机/软件工具)想 要请求对应的服务,都需要知道机器的具体 IP 或者域名 URL,当微服务实例众多时,这是非常难以记忆的,对 于客户端来说也太复杂难以维护。此时就有了网关,客户端相关的请求直接发送到网关,由网关根据请求标识 解析判断出具体的微服务地址,再把请求转发到微服务实例。这其中的记忆功能就全部交由网关来操作了。
- 核心概念
路由(Route):路由是网关最基础的部分,路由信息由 ID、目标 URI、一组断言和一组过滤器组成。如果断言 路由为真,则说明请求的 URI 和配置匹配。
断言(Predicate):Java8 中的断言函数。Spring Cloud Gateway 中的断言函数输入类型是 Spring 5.0 框架中 的 ServerWebExchange。Spring Cloud Gateway 中的断言函数允许开发者去定义匹配来自于 Http Request 中的任 何信息,比如请求头和参数等。
过滤器(Filter):一个标准的 Spring Web Filter。Spring Cloud Gateway 中的 Filter 分为两种类型,分别是 Gateway Filter 和 Global Filter。过滤器将会对请求和响应进行处理。
若依的实现
以上是若依的实现,看代码结构来看,基本和单体程序没有什么区别,不过引入了几个包:
通过这个网关,它可以注册到nacos上,本身就是一个服务,
功能
路由
设置路由规则,比如
然后可以由以下方式配置路由规则
限流
熔断降级
跨域配置
黑白名单
全局过滤
Sentinel 限流,分组限流
以下是基本的原理示意:
网关的集群有必要了解一下的:首先可以知道 Gateway 的作用是整个微服务的入口,网关后有许多会员服务,订单服务,支付服务等,一旦有任何请求,想访问到微服务网站,需要经过网关进行转发,到真实的微服务中,如果网关出问题宕机,会导致整个微服务无法实现通讯,因为任何请求需要通过网关在转到服务中,网关是入口,如果网关是宕机的情况下,只要网关出问题就会无法访问。
就例如在企业中有大门,如果大门垮了,别人就进不来了,网关就是整个微服务的入口,如果网关出现问题,整个微服务都无法使用。所以这个地方必须要实现高可用。
在进行访问时按照如下步骤访问,网关不能只有一个,假如现在有两个网关,分别是网关一和网关二,每个网关后配置的服务都是相同的,如果有3个服务,分别是会员服务、订单服务、支付服务,网关转到每个服务中,都是走相同配置。
现在有2个网关,那么要如何得知客户端访问的是哪一个网关,而两个网关背后都是相同配置。答案是网关实现了集群访问可以使用 Njinx 或者 lVS 虚拟 VIP,具体操作要看情况而定,不建议使用虚拟 VIP。
Nginx 和网关是非常相似的,客户端先访问 nginx,nginx 通过配置来实现 nginx控制两个网关,例如走 nginx1时,访问网关一,走 Nginx2时,访问网关二。
但是存在问题当 Nginx 宕机的情况下,网关就访问不了了,所以要清楚 Nginx 也可以多台,可以安排多台Nginx使用相同的配置,中间客户端通过IVS虚拟VIP会随
机绑定到 njinx 中来访问网关。
在大公司中,Nginx 不可能单机版本,因为网关只要一宕机整个微服务就会无法访问,所以网关必须测集群,要实现多个。所以安排多台 Nginx 使用相同的配置,中间客户端通过 IVS 虚拟 VIP 会随机绑定到 njinx 中来访问网关,但是只会在一台机器下面有虚拟 VIP,在宕机的情况下会把虚拟 VIP 转向另一台机器,IVS 是 Linux 独有的技术。
在电商项目中,也是如此。网关必须要做集群,防止出问题。出问题时,可以转换到另一台网关中,能够自动重启。
如果实现多次还是无法进行,机器就会发邮件给运营人员,所以网关可以使用 nginx 或者 IVS 虚拟 VIP 实现集群访问。
总结
基本的功能以及配置的实现,可以参照若依的文档即可,写的比较详细,这里我们需要清楚的是,网关哪些常用的功能,在哪几个位置可以找到,然后我们在哪里可以配置、修改就行。
通过一一系列的文章,我们了解微服务的思想是最重要的,特别是对于编程有影响的地方,重点关注即可。
猜你喜欢
- 2024-12-23 Kong 优雅实现微服务网关鉴权,登录场景落地实战篇
- 2024-12-23 微服务实战系列(九)-注册中心与网关高可用架构设计
- 2024-12-23 使用Kong作为微服务网关 微服务api网关
- 2024-12-23 微服务架构中API网关介绍 微服务api网关的作用
- 2024-12-23 万字长文详解微服务网关(中) 微服务网关是什么?
- 2024-12-23 微服务API聚合网关 An Aggregation API Gateway
- 2024-12-23 浅谈微服务:通信之网关 Ready 微服务架构中网关的作用
- 2024-12-23 国产微服务网关Apache APISIX 上手
- 2024-12-23 微服务网关 Gateway 进阶 - 认证鉴权
- 2024-12-23 微服务架构之API网关——在微服务项目中的技术框架和用法实践
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)