计算机系统应用教程网站

网站首页 > 技术文章 正文

服务网关-微服务小白入门(3) 微服务网关有哪些功能

btikc 2024-12-23 08:52:14 技术文章 18 ℃ 0 评论

基本概念

  • Spring Cloud Gateway

Spring Cloud Gateway是基于Spring生态系统之上构建的API网关,包括:Spring 5.xSpring Boot 2.xProject ReactorSpring 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 实现集群访问。

总结

基本的功能以及配置的实现,可以参照若依的文档即可,写的比较详细,这里我们需要清楚的是,网关哪些常用的功能,在哪几个位置可以找到,然后我们在哪里可以配置、修改就行。

通过一一系列的文章,我们了解微服务的思想是最重要的,特别是对于编程有影响的地方,重点关注即可。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表