第1章网关之道veggiegfei

工作中提及的网关特指API网关(APIGateway)。字面意思是将所有API的调用统一接入API网关层,由网关层负责接入和输出

什么情况下需要一个API网关?

单体应用时代,业务简单,功能都集中在一个应用中,统一部署、统一测试,随着业务发展组织成员日益增多。将多有的功能集中在一个Tomcat中的时候,每更新一个功能模块,势必要更新所有的程序。系统难以维护

微服务出现,将原来的单体应用进行微服务化。将原来集中于一体的功能(如商品功能、订单功能)进行拆分,每个功能模块有各自的自成体系的发布、运维等功能。解决了单体应用下的弊端

微服务化后,原来iOS、Android、PC客户端调用服务端的地方,需要多个URL地址,商品的、订单的、用户的。为服务化后就必须有统一的入口和出口,在这种情况下,APIGateway就出现了。

APIGateway很好地解决了微服务下客户端调用、统一接入的问题。如下图

有了API网关之后,各个API服务提供团队可以专注自己的业务逻辑处理,而API网关更专注于安全、流量、路由等问题。

网关与代理的区别:

代理是纯粹的数据透传,协议不会发生变化;

网关在数据透传的背景下,还会涉及协议的转换,比如上图中用户请求传输到网关的协议是HTTP,通过网关透传到下游则可能已经转换成企业内部的RPC了(比如JSF、Dubbo等企业自研的RPC框架)

1.1.2API网关的基本功能

一个API网关的基本功能包括:统一接入、协议适配、流量管控与容错,以及安全防护,这四大基本功能构成了网关的核心能力。

网关首要的功能是负责统一接入,然后将请求的协议转换成内部的接口协议,在调用的过程中还要有限流、降级和熔断等容错的方式来保护网关的整体稳定,同时网关还要做到基本的安全防护(防刷控制),以及黑白名单(比如IP地址白名单)等基本的安全措施。如下图所示。

1.1.3API网关架构示例

除了基本的四个功能,网关运行良好的环境还包括注册中心(比如通过ZooKeeper读取已发布的API接口的动态配置)。为了实现高性能,将数据全部异构到缓存(比如Redis)中,同时还可以配合本机缓存来进一步提高网关系统的性能。

为了提高网关的吞吐率,可以使用NIO+Servlet3异步的方式,还可以利用Servlet3的异步特性将请求线程与业务处理线程分开,为后续的线程池隔离做好基本的支撑。

整体的网关架构(涵盖开放网关)示例如下图所示

1.2一个传统网关系统的几种“死”法

传统网关,是按照网关技术演进的阶段划分的,从同步到半同步,再到全异步。将同步和半同步技术下的网关称为“传统”网关。

同步网关的意思是从接收请求到调用API接口提供方的过程都是同步调用;

半同步则是指将I/O请求线程和业务处理线程分开,但业务线程内部还是同步调用API接口;

全异步是整个链路都是异步请求。

传统网关会在什么情况下down掉?

API网关系统的两大特点:一个是访问量大,另一个是依赖系统多。如下图所示,“单纯”的情况下(比如系统A提供的接口只供网关调用)网关系统要承受比被依赖的系统多数倍的流量,因为API网关是所有依赖API的集合。

网关还会通过RPC调用很多底层系统,每个系统的稳定性水平参差不齐,接口的性能也会间接影响网关整体的运行稳定性。因此我们再做防范的时候就要从这两个特点入手。

上面介绍的API网关的两大特点是外部因素,下面是内部因素。程序都是运行在计算机上面的,计算机的每个部件的利用率和负载水平直接影响程序的运行,比如CPU、内存、磁盘等。另外系统之间的交互还需要网络,这些因素都需要考虑。

一段程序在计算机中运行依赖部件如下图:

用户请求在进入网关的时候从技术上已经把I/O请求线程和业务处理线程隔离开了,这一点可以利用Servlet3异步特性实现。如下图所示

CPU利用率:显示的是程序在运行期间实时占用的CPU百分比

top-14:17:13up19days,3:27,1user,loadaverage:1.19,1.39,1.33

loadaverages的意思是系统平均负载,包括三个数字,分别表示1分钟、5分钟、15分钟内系统的负载平均值。可以按照1分钟的粒度取一个数字,从而判定系统负载的大小。

19days说明此台机器已经有23天没有重新启动过了

CPU利用率高并不意味着负载就一定大,两者没有必然联系。线上生产环境需要重点监控CPU利用率和负载。

API网关访问量大、依赖系统多,如果调用的API性能突然变差,在大访问量的情况下,线程数会逐渐升高,直至将CPU资源耗尽。蔓延到整个网关集群,这就是雪崩效应。

磁盘有两个比较重要的指标分别是磁盘使用率和磁盘负载百分比。

磁盘负载百分比:在Linux下查看该指标的命令是iostat-x110

%util值接近100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。

即使在日志级别合理的情乱下,比如error日志,这时又涉及网关的第二个特性,依赖系统多。当有API返回失败错误的时候,就会有大量的error日志写入磁盘,很容易把磁盘资源耗尽,尤其在容器时代,每台服务器分配的磁盘容量相对物理机来说都比较小,如果集群的所有机器的磁盘资源耗尽,那么对网关系统来说就是一场灾难。

在微服务架构下,应用离不开网络,尤其是网关系统,它的特点之一就是依赖系统多。依赖就是RPC调用和网络。

总结一个传统API网关系统的几种死法:

1.因为依赖的某个系统的API性能突然变差导致请求线程数量逐渐升高直至线程占满了CPU,也就是API网关依赖系统多的特点因素,可以认为是被其他系统拖死的。

2.线上生产环境日志打印不规范,过度打印日志,再加上请求量突然变大,导致清理工具来不及清理日志,最后磁盘满了。

3.网络一直是一个除系统本身外最不稳定的因素,在系统之间调用的时候,网络发生故障导致请求变慢,这一点和第一条被其他系统拖死类似,只是这次是网络。

THE END
1.什么是网关?什么是网关? 网关也称为网络连接器或协议转换器。网关既可以用于广域网互连,也可以用于局域网互连。它是最复杂的网络互连设备。网关的结构类似于路由器。就是它们位于不同的互连级别。1.网关工作层面及功能 网关工作在OSI参考模型的传输层或以上,大多数网关运行在应用层。网关一般用于两个具有不同高层协议的网络的https://www.tlkjt.com/web/12650.html
2.网关网关详解IP子网掩码网关云开发微服务网关总之,网关在不同网络之间传递数据,就像城市中的大门连接两个社区一样。 现实生活中,很多人也会把具有网关功能的设备称作是网关,比如路由器,这里要理解清楚。 可以实现网关的设备有很多,比如:路由器、交换机路由器、防火墙、代理服务器、网关设备、软件网关等。 二、IP地址详解 IP地址(Internet Protocol Address)是在https://blog.csdn.net/weixin_45188218/article/details/135392219
3.网关是什么?问答网关是两个网络边界的通道,相当于请求转发,就是代理服务器。https://developer.aliyun.com/ask/321356
4.网关是什么?有什么功能和应用嘲?一、网关是什么? 网关,顾名思义,是网络的门户,是连接不同网络的桥梁。它是一种物联网设备,用于连接两个或多个网络的设备,使得它们可以相互传递数据。简单来说,网关就是负责在不同网络之间进行数据传输的中转站,执行数据转发、边缘计算、协议转换、地址转换等功能,从而实现不同网络、设备及系统之间的通信。 https://www.elecfans.com/d/2365604.html
5.网关是什么?答:网关(Gateway)就是一个网络连接到另一个网络的“关口”。在Internet网中,网关是一种连接内部网与Internet上其它网的中间设备,也称“路由器”。网关地址是可以理解为内部网与Internet网信息传输的通道地址。按照不同的分类标准,网关也有很多种。TCP/IP协议里的网关是最常用的,在这里我们所讲的“网关”均指TCP/http://www.dns65.com/style/info/shownews.asp?id=667
6.网关是什么?网关是干嘛的?网关的定义和作用摘要: 网关是什么?网关是一种在计算机网络中充当连接器和中转站的设备或系统。它允许不同网络之间的通信和数据传输,并且能够处理数据包的转发和协议转换。 网关是什么?网关是一种在计算机网络中充当连接器和中转站的设备或系统。它允许不同网络之间的通信和数据传输,并且能够处理数据包的转发和协议转换。网关可以是https://www.hqew.com/tech/news/3837137.html
7.网关是什么?作用?网关是什么?作用?防毒及邮件过滤 查看全部6条评论回答 写回答 470997846Gentle 把它理解为一种翻译器,转换器。 在不同的通信协议、数据格式或语言,甚至体系结构完全不同的两种系统之间 使二者可以连接 通信 有用(0) 回复 举报 相关问题 刚重新装了W764位系统,每隔几分钟就断线,都提升我默认网关不可用,点击https://wap.zol.com.cn/ask/details_26569011_3395744_3.html
8.网关是什么意思?网关怎么设置?网关是什么意思?网关(Gateway)就是一个网络连接到另一个网络的“关口”。在Internet网中,网关是一种连接内部网与Internet上其它网的中间设备,也称“路由器”。网关地址是可以理解为内部网与Internet网信息传输的通道地址。按照不同的分类标准,网关也有很多种。TCP/IP协议里的网关是最常用的,在这里我们所讲的“网关https://www.qiuyexitong.com/article/988.html
9.网关什么是网关?网关的通俗理解什么是网关 网关就是我们从这个网络到达那个网络的出口 在现实世界中 我们从这个房间到那个房间 其实就是从这个房间的门出去 然后通往其他房间 在网络世界中 我们去往另外一个网络 也需要把数据包发到网关 再从网关转发到另外一个网络中 在实际的配置中 路由器 交换机 防火墙 甚至连一个路由器都可以作为网关 http://www.451dx.com/sys-nd/1027.html
10.什么是网关?网关是什么意思通俗点什么是网关?网关是什么意思通俗点关键词:网关 问题:什么是网关?网关是什么意思通俗点回答: 网关(Gateway)又称网间连接器、协议转换器。网关在传输层上以实现网络互连,是最复杂的网络互连设备,仅用于两个高层协议不同的网络互连。网关是一种网络设备,它把一个网络连接到另一个网络。它可以用来路由数据包,控制网络http://m.wtblnet.com/wap/info/1195.html
11.网关是什么?网关和路由器的区别网关是什么?网关和路由器的区别 网关是计算机网络中的一个重要概念。它可以连接两个不同的计算机网络,使得在这两个网络之间的设备可以互相通信。一般来说,网关是通过转发数据包实现通信连接的。 1.网关是什么 在计算机网络中,网关是连接两个不同网络的设备或程序。它可以将不同格式的数据包进行转换并传递,以使不https://www.eefocus.com/e/517975
12.本地数据网关是什么?MicrosoftLearn本地数据网关是什么? Learn 发现 产品文档 开发语言 主题 登录 搜索 本地和 VNet 数据网关文档 本地数据网关文档 本地数据网关是什么? 概念 操作方法 参考 资源 虚拟网络数据网关文档 什么是虚拟网络数据网关? 概念 操作方法 使用英语阅读 通过 Facebookx.com 共享LinkedIn电子邮件https://docs.microsoft.com/data-integration/gateway/service-gateway-onprem
13.你好,请问应用网关是什么,该怎么填?应用网关:选填,用于接收支付宝异步通知,例如服务市场订购通知、授权通知 https://open.alipay.com/portal/forum/post/55801011
14.天翼网关是什么?天翼网关怎么设置?天翼网关是什么?天翼网关怎么设置? 很多使用电信光纤的朋友可能会在电脑—网络中看到天翼网关的图标,那么天翼网关是什么呢?天翼网关要怎么设置?下面小编和大家一起来学习关于天翼网关的知识。 天翼网关是什么? 天翼网关是电信推出的光猫+智能路由器”的集合体,是智慧家庭的核心终端,采用高规格硬件设计、全新的统一外观http://m.winwin7.com/JC/7879.html
15.什么是网关?网关(Gateway)又称网间连接器、协议转换器。网关在传输层上以实现网络互连,是最复杂的网络互连设备,仅用于两个高层协议不同的网络互连。 其它问题 建立WAN链路涉及的不同技术有哪些? 模拟连接-使用常规电话线;数字连接-使用数字电话线;交换连接-使用发送方和接收方之间的多组链接来移动数据。 什么是DHCP? DHCPhttp://www.eduaag.com/11967/wd_132009.html?uf=512ffac09f7e6cc8af971f86f9e83f65&xst=false