什么是微服务API网关?

Yanyan 233 2023-11-02


背景:

最近 微服务架构在项目中的应用越来越多,我们知道在微服务架构风格中,一个大应用被拆分成为了多个小的服务系统提供出来,这些小的系统他们可以自成体系,也就是说这些小系统可以拥有自己的数据库,框架甚至语言等,这些小系统通常以提供 Rest Api 风格的接口来被 H5, Android, IOS 以及第三方应用程序调用。

但是在UI上进行展示的时候,我们通常需要在一个界面上展示很多数据,这些数据可能来自于不同的微服务中,举个例子。

在一个电商系统中,查看一个商品详情页,这个商品详情页包含商品的标题,价格,库存,评论等,这些数据对于后端来说可能是位于不同的微服务系统之中,可能我后台的系统是这样来拆分我的服务的:

产品服务 - 负责提供商品的标题,描述,规格等。

价格服务 - 负责对产品进行定价,价格策略计算,促销价等。

库存服务 - 负责产品库存。

评价服务 - 负责用户对商品的评论,回复等。

现在,商品详情页需要从这些微服务中拉取相应的信息,问题来了?

由于我们使用的服务系统架构,所以没办法像传统单体应用一样依靠数据库的 join 查询来得到最终结果,那么如何才能访问各个服务呢?

按照微服务设计的指导原则,我们的微服务可能存在下面的问题:

服务使用了多种协议,因为不同的协议有不同的应场景用,比如可能同时使用 HTTP, AMQP, gRPC 等。

服务的划分可能随着时间而变化。

服务的实例或者Host+端口可能会动态的变化。

那么,对于前端的UI需求也可能会有以下几种:

粗粒度的API,而微服务通常提供的细粒度的API,对于UI来说如果要调用细粒度的api可能需要调用很多次,这是个不小的问题。

不同的客户端设备可能需要不同的数据。Web,H5,APP

不同设备的网络性能,对于多个api来说,这个访问需要转移的服务端会快得多

以上,就是我们构建微服务的过程中可能会遇到的问题。那么如何解决呢?

这种情况下, API 网关(API Gataway)诞生了。

一、API网关概述

1、什么是API网关

API网关是一个服务器,是系统的唯一入口。从面向对象设计的角度看,它与外观模式类似。API网关封装了系统内部架构,为每个客户端提供一个定制的API。它可能还具有其它职责,如身份验证、监控、负载均衡、缓存、请求分片与管理、静态响应处理。

API网关方式的核心要点是,所有的客户端和消费端都通过统一的网关接入微服务,在网关层处理所有的非业务功能。通常,网关也是提供REST/HTTP的访问API。服务端通过API-GW注册和管理服务。

2、API网关网关的价值:

网关层对外部和内部进行了隔离,保障了后台服务的安全性。

对外访问控制由网络层面转换成了运维层面,减少变更的流程和错误成本

减少客户端与服务的耦合,服务可以独立发展。通过网关层来做映射。

通过网关层聚合,减少外部访问的频次,提升访问效率。

节约后端服务开发成本,减少上线风险。

为服务熔断,灰度发布,线上测试提供简单方案。

二、为啥需要API网关

计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决。— David Wheeler

API网关的观念其实和当前流行的SOA架构和微服务架构模式有关。在传统大型企业比较流行的SOA架构中,有一个企业服务总线(ESB)的概念,再ESB中融合了管理、注册、中介、编排、治理等功能,是一个访问高度频繁、功能高度集中的地方,因此常常也是性能瓶颈所在。而在微服务架构中,伴随着去中心化的理念,几乎没有EBS的的概念,分布式服务架构技术不再依赖于具体的服务中心容器技术( ESB),而是将服务寻址和调用完全分开,这样就不需要通过容器作为服务代理,在运行期实现最高效的直连调用。

在微服务架构中,服务的粒度被进一步细分,各个业务服务可以被独立的设计、开发、测试、部署和管理。各个独立部署单元可以用不同的开发测试团队维护,可以使用不同的编程语言和技术平台进行设计,这就要求必须使用一种语言和平台无关的服务协议作为各个单元间的通讯方式。而REST API 由于其简单、高效、跨平台、易开发、易测试、易集成,成为了不二选择。此时如果都是采用客户端和服务器直连的话,那么此时系统就会出现大量的冗余代码和功能,维护起来工作量巨大,而且随着服务增多,出错性也大大的增加。因此一个类似综合前置的系统就产生了,这就是 API 网关(API Gateway)。API 网关作为分散在各个业务系统微服务的 API 聚合点和统一接入点,外部请求通过访问这个接入点,即可访问内部所有的 REST API 服务。

网关定义

网关的角色是作为一个 API 架构,用来保护、增强和控制对于 API 服务的访问。

API 网关是一个处于应用程序或服务(提供 REST API 接口服务)之前的系统,用来管理授权、访问控制和流量限制等,这样 REST API 接口服务就被 API 网关保护起来,对所有的调用者透明。因此,隐藏在 API 网关后面的业务系统就可以专注于创建和管理服务,而不用去处理这些策略性的基础设施。

通俗的说API网关中就是做一些通用的基础设施功能。类似AOP中的横切关注点概念,把业务系统中涉及的一些通用功能(日志分析、鉴权、路由等)抽取到API网关中统一管理。API 网关不是一个典型的业务系统, 而是一个为了让业务系统更专注与业务服务本身,给API服务提供更多附加能力的一个中间层。

三、API网关的四大职能

请求接入:作为所有 API 接口服务请求的接入点,管理所有的接入请求;业务聚合:作为所有后端业务服务的聚合点,所有的业务服务都可以在这里被调用;中介策略:实现安全、验证、路由、过滤、流控,缓存等策略,进行一些必要的中介处理;统一管理:提供配置管理工具,对所有 API 服务的调用生命周期和相应的中介策略进行统一管理。

四、API网关关注点

1、开发维护简单,节约人力成本和维护成本。

2、高性能,节约设备成本,提高系统吞吐能力。

3、高可用(非常重要)

4、方便灵活地实现安全、验证、过滤、聚合、限流、监控等各种策略。

五、API网关分类


1698904585485.png

如上图所示,面对互联网复杂的业务系统,基本可以将API网关分成两类:流量网关和业务网关。

流量网关:跟具体的后端业务系统和服务完全无关的部分,比如安全策略、全局性流控策略、流量分发策略等。流量网关的功能跟 Web 应用防火墙(WAF)非常类似。WAF一般是基于 Nginx/OpenResty 的 ngx_lua 模块开发的 Web 应用防火墙。

业务网关:针对具体的后端业务系统,或者是服务和业务有一定关联性的部分,并且一般被直接部署在业务服务的前面。业务网关一般部署在流量网关之后,业务系统之前,比流量网关更靠近系统。我们大部分情况下说的 API 网关,狭义上指的是业务网关。并且如果系统的规模不大,我们也会将两者合二为一,使用一个网关来处理所有的工作



版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:微服务网关下的服务调用以及最佳调用方式
下一篇:API监控工具为你的API保驾护航
相关文章

 发表评论

暂时没有评论,来抢沙发吧~