认识API网关
为了应对业务的细分以及高并发的挑战,微服务的架构被广泛使用,由于微服务架构中应用会被拆分成多个服务。
为了方便客户端对这些服务的调用于是引入了 API 的概念。今天我们就来看看API 网关的原理以及它是如何应用的。
API 网关的定义
网关一词最早出现在网络设备,比如两个相互独立的局域网之间通过路由器进行通信, 中间的路由被称之为网关。
落实在开发层面来说,就是客户端与微服务系统之间存在的网关。从业务层面来说,当客户端完成某个业务的时候,需要同时调用多个微服务。
从系统层面来说,任何一个应用系统如果需要被其他系统调用,就需要暴露 API,这些 API 代表着的功能点。这个聚合的方式有点像设计模式中的门面模式(Facade),它为外部的调用提供了一个统一的访问入口。
从客户端类型层面来说,为了屏蔽不同客户端调用差异也可以加入 API 网关。由于 API 网关所处的位置是客户端与微服务交界的地方,因此从功能上它还包括:路由,负载均衡,限流,缓存,日志,发布等等。
Spring Cloud Gateway 概念与定义
API 网关的定义中我们提到了为什么要使用 API 网关,是为了解决客户端对多个微服务进行访问的问题。
由于服务的切分导致一个操作需要同时调用多个服务,因此为这些服务的聚合提供一个统一的门面,这个门面就是 API 网关。
针对于 API 网关有很多的实现方式,例如:Zuul,Kong 等等。这里我们以及 Spring Cloud Gateway 为例展开给大家介绍其具体实现。
一般来说,API 网关对内将微服务进行集合,对外暴露的统一 URL 或者接口信息供客户端调用。
那么客户端是如何与微服务进行连接,并且进行沟通的,需要引入下面几个重要概念 。
①路由(Route):任何一个来自于客户端的请求都会经过路由,然后到对应的微服务中。
每个路由会有一个唯一的 ID 和对应的目的 URL。同时包含若干个断言(Predicate)和过滤器(Filter)。
②断言(Predicate):当客户端通过 Http Request 请求进入 Spring Cloud Gateway 的时候,断言会根据配置的路由规则,对 Http Request 请求进行断言匹配。
说白了就是进行一次或者多次 if 判断,如果匹配成功则进行下一步处理,否则断言失败直接返回错误信息。
③过滤器( Filter):简单来说就是对流经的请求进行过滤,或者说对其进行获取以及修改的操作。注意过滤器的功能是双向的,也就是对请求和响应都会进行修改处理 。
一般来说 Spring Cloud Gateway 中的过滤器有两种类型:Gateway Filter、Global Filter
Gateway Filter 用在单个路由和分组路由上。Global Filter 可以作用于所有路由,是一个全局的 Filter。
Spring Cloud Gateway 工作原理
说完了 Spring Cloud Gateway 定义和要素,再来看看其工作原理。总的来说是对客户端请求的处理过程。
图 1:Spring Cloud Gateway 处理请求流程图
如图 1 所示,当客户端向 Spring Cloud Gateway 发起请求,该请求会被 HttpWebHandlerAdapter 获取,并且对请求进行提取,从而组装成网关上下文。将组成的上下文信息传递到 DispatcherHandler 组件。DispatcherHandler 作为请求分发处理器,主要负责将请求分发到对应的处理器进行处理。这里请求的处理器包括 RoutePredicate HandlerMapping (路由断言处理映射器) 。 路由断言处理映射器用于路由的查找,以及找到 路由后返回对应的 FilteringWebHandler。 其负责组装 Filter 链表并执行过滤处理,之后再将请求转交给应用服务,应用服务处理完后,最后返回 Response 给客户端 。其中 FilteringWebHandler 处理请求的时候会交给 Filter 进行过滤的处理。这里需要注意的是由于 Filter 是双向的所以,当客户端请求服务的时候,会通过 Pre Filter 中的 Filter 处理请求。
当服务处理完请求以后返回客户端的时候,会通过 Post Filter 再进行一次处理。
总结
由于微服务的盛行,API 网关悄然兴起。针对 API 网关本身讲述了其存在的原因,它不仅提供了服务的门面,而且可以协调不同的系统之间的通讯以及服务不同的客户端接口。
针对 API 网关的定义和概念的解释,其实现了路由、过滤器、断言,针对不同的客户端请求可以路由到不同的微服务,以及其中几个组件是如何分工合作完成路由工作的。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
语音领域学术界和工业界的七宗罪
云栖号资讯:【点击查看更多行业资讯】在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 计算机视觉领域早已全面迎来“ImageNet 时刻”,而语音识别领域的的“ImageNet 时刻”却迟迟未来临。与计算机视觉领域相比,语音识别的预训练模型、传递学习和数据集都相对落后,而且语音识别的计算资源需求仍然过高。近日,一位语音识别领域的实践者对该领域现有的研究工作展开了一次彻底的批判,他认为学术界和工业界都应该为语音领域未能实现“ImageNet”时刻负责。本文是《迈向语音识别领域的 ImageNet 时刻》的后续,文中将回答以下问题: 什么是所谓的 ImageNet 时刻,它有什么意义? 为什么它在语音领域还没有出现?学术界和工业界为此要负哪些间接责任? 上一篇文章中介绍的方法有哪些不足? 本文最初发表在 thegradient 网站上(A Speech-To-Text Practitioner’s Criticisms of Industry and Academia),经原作者及网站授权由 InfoQ 翻译并分享。 什么是 ImageNet 时刻? 我们认为,一个 ML 分...
- 下一篇
如何使用 Istio 进行多集群部署管理:多控制平面
作者 | 王夕宁 阿里云高级技术专家 导读:本文摘自于阿里云高级技术专家王夕宁撰写的《Istio服务网格技术解析与实战》一书,讲述了如何使用Istio进行多集群部署管理来阐述服务网格对多云环境、多集群即混合部署的支持能力。 前文详情: 《如何使用 Istio 进行多集群部署管理:单控制平面 VPN 连接拓扑》 《如何使用 Istio 进行多集群部署管理:单控制平面 Gateway 连接拓扑》 在多控制平面拓扑的配置中,每个Kubernetes集群都会安装相同的Istio控制平面,并且每个控制平面只会管理自己集群内的服务端点。通过使用Istio网关、公共根证书颁发机构(CA)以及服务条目ServiceEntry,可以将多个集群配置组成一个逻辑上的单一服务网格。这种方法没有特殊的网络要求,因此通常被认为是在Kuberne
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8编译安装MySQL8.0.19
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS关闭SELinux安全模块
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Red5直播服务器,属于Java语言的直播服务器