面试题:说一下API网关的作用?企业如何应用API网关?

news2024/11/17 11:52:50

文章目录

  • 一、API网关的用处
    • 1、Open API
    • 2、微服务网关
    • 3、API服务管理平台
  • 二、API网关在企业架构中的地位
  • 三、企业中如何应用API网关
  • 四、API网关有哪些竞争方案
  • 五、API网关解决方案
  • 六、企业怎么选择API网关
    • 1、性能与可用性
    • 2、可扩展性、可维护性
    • 3、需求匹配度
    • 4、是否开源?公司是否有自开发的能力?
    • 5、公有云还是私有云


一、API网关的用处

API网关我的分析中会用到以下三种场景。

1、Open API

企业需要将自身数据、能力等作为开发平台向外开放,通常会以rest的方式向外提供。最好的例子就是淘宝开放平台、腾讯公司的QQ开发平台、微信开放平台。

Open API开放平台必然涉及到客户应用的接入、API权限的管理、调用次数管理等,必然会有一个统一的入口进行管理,这正是API网关可以发挥作用的时候。

2、微服务网关

微服务的概念最早在2012年提出,在Martin Fowler的大力推广下,微服务在2014年后得到了大力发展。

在微服务架构中,有一个组件可以说是必不可少的,那就是微服务网关,微服务网关处理了负载均衡,缓存,路由,访问控制,服务代理,监控,日志等。

API 网关在微服务架构中正是以微服务网关的身份存在。

3、API服务管理平台

上述的微服务架构对企业来说有可能实施上是困难的,企业有很多遗留系统,要全部抽取为微服务改动太大,对企业来说成本太高。

但是由于不同系统间存在大量的API服务互相调用,因此需要对系统间服务调用进行管理,清晰地看到各系统调用关系,对系统间调用进行监控等。

API网关可以解决这些问题,我们可以认为如果没有大规模的实施微服务架构,那么对企业来说微服务网关就是企业的API服务管理平台。

二、API网关在企业架构中的地位

一个企业随着信息系统复杂度的提高,必然出现外部合作伙伴应用、企业自身的公网应用、企业内网应用等。

在架构上应该将这三种应用区别开,三种应用的安排级别、访问方式也不一样。

因此在我的设计中将这三种应用分别用不同的网关进行API管理,分别是:API网关(OpenAPI合伙伙伴应用)、API网关(内部应用)、API网关(内部公网应用)。

如下图所示:

图片

三、企业中如何应用API网关

1、 对于OpenAPI使用的API网关来说,一般合作伙伴要以应用的形式接入到OpenAPI平台,合作伙伴需要到 OpenAPI平台申请应用。

因此在OpenAPI网关之外,需要有一个面向合作伙伴的使用的平台用于合作伙伴,这就要求OpenAPI网关需要提供API给这个用户平台进行访问。

如下架构:

图片

当然如果是在简单的场景下,可能并不需要提供一个面向合作伙伴的门户,只需要由公司的运营人员直接添加合作伙伴应用id/密钥等,这种情况下也就不需要合作伙伴门户子系统。

2、 对于内网的API网关,在起到的作用上来说可以认为是微服务网关,也可以认为是内网的API服务治理平台。

当企业将所有的应用使用微服务的架构管理起来,那么API网关就起到了微服务网关的作用。

而当企业只是将系统与系统之间的调用使用rest api的方式进行访问时使用API网关对调用进行管理,那么API网关起到的就是API服务治理的作用。

架构参考如下:

图片

3、 对于公司内部公网应用(如APP、公司的网站),如果管理上比较细致,在架构上可能由独立的API网关来处理这部分内部公网应用

如果想比较简单的处理,也可以是使用面向合作伙伴的API网关。

如果使用独立的API网关,有以下的好处:

  • 面向合作伙伴和面向公司主体业务的优先级不一样,不同的API网关可以做到业务影响的隔离。
  • 内部API使用的管理流程和面向合作伙伴的管理流程可能不一样。
  • 内部的API在功能扩展等方面的需求一般会大于OpenAPI对于功能的要求。

基于以上的分析,如果公司有能力,那么还是建议分开使用合作伙伴OPEN API网关和内部公网应用网关。

四、API网关有哪些竞争方案

1、 对于Open API平台的API网关,我分析只能选择API网关作为解决方案.

业界没有发现比较好的可以用来作为Open API平台的入口的其他方案。

2、 对于作为微服务网关的API网关,业界的选择可以选择的解决方案比较多,也取决于微服务器的实现方案,有一些微服务架构的实现方案是不需要微服务网关的。

(1)Service Mesh

这是新兴的基于无API网关的架构,通过在客户端上的代理完成屏蔽网络层的访问,这样达到对应用层最小的改动

当前Service Mesh的产品还正在开发中,并没有非常成熟可直接应用的产品。发展最迅速的产品是Istio。建议大家密切关注相关产品的研发、业务使用进展。

图片

(2)基于duboo架构

在这个架构中通常是不需要网关的,是由客户端直接访问服务提供方,由注册中心向客户端返回服务方的地址。

图片

五、API网关解决方案

私有云开源解决方案如下:

  • Kong kong是基于Nginx+Lua进行二次开发的方案:
    https://konghq.com/
  • Netflix Zuul,zuul是spring cloud的一个推荐组件:
    https://github.com/Netflix/zuul
  • orange,这个开源程序是国人开发的:
    http://orange.sumory.com/

公有云解决方案:

  • Amazon API Gateway:
    https://aws.amazon.com/cn/api-gateway/
  • 阿里云API网关:
    https://www.aliyun.com/product/apigateway/
  • 腾讯云API网关:
    https://cloud.tencent.com/product/apigateway

自开发解决方案:

  • 基于Nginx+Lua+ OpenResty的方案,可以看到Kong,orange都是基于这个方案
  • 基于Netty、非阻塞IO模型。通过网上搜索可以看到国内的宜人贷等一些公司是基于这种方案,是一种成熟的方案。
  • 基于Node.js的方案。这种方案是应用了Node.js天生的非阻塞的特性。
  • 基于java Servlet的方案。zuul基于的就是这种方案,这种方案的效率不高,这也是zuul总是被诟病的原因。

六、企业怎么选择API网关

如果要选择一款已有的API网关,需要从以下几个方面去考虑。

1、性能与可用性

如果一旦采用了API网关,那么API网关就会作为企业应用核心,因此性能和可用性是必须要求的。

从性能上来说,需要让网关增加的时间消耗越短越好,个人觉得需要10ms以下。

系统需要采用非阻塞的IO,如epoll,NIO等,网关和各种依赖的交互也需要是非阻塞的,这样才能保证整体系统的高可用性,如:Node.js的响应式编程和基于java体现的RxJava和Future。

网关必须支持集群部署,任务一台服务器的crash都应该不影响整体系统的可用性。

多套网关应该支持同一管理平台和同一监控中心。如:一个企业的OpenAPI网关和内部应用的多个系统群的不同的微服务网关可以在同一监控中心进行监控。

2、可扩展性、可维护性

一款产品总有不能满足生产需求的地方,因此需求思考产品在如何进行二次开发和维护,是否方便公司团队接手维护产品。

3、需求匹配度

需要评估各API网关在需求上是否能满足。

比如:如果是OpenAPI平台需要使用API网关,那么需要看API网关在合作伙伴应用接入、合作伙伴门户集成、访问次数限额等OpenAPI核心需求上去思考产品是否能满足要求。

如果是微服务网关,那么要从微服务的运维、监控、管理等方面去思考产品是否足够强大。

4、是否开源?公司是否有自开发的能力?

现有的开源产品如kong,zuul,orange都有基础的API网关的核心功能,这些开源产品大多离很好的使用有一定的距离

比如:没有提供管理功能的UI界面、监控功能弱小,不支持OpenAPI平台,没有公司运营与运维的功能等。

当然开源产品能获取源代码,如果公司有比较强的研发能力,能hold住这些开源产品,经过二次开发kong、zuul应该还是适应一些公司,不过需求注意以下一些点:

  • kong是基于ngnix+lua的,从公司的角度比较难于找到能去维护这种架构产品的人。需求评估当前公司是否有这个能力去维护这个产品。
  • zuul因为架构的原因在高并发的情况下性能不高,同时需要去基于研究整合开源的适配zuul的监控和管理系统。
  • orange由于没有被大量使用,同时是国内个人在开源,在可持续性和社区资源上不够丰富,出了问题后可能不容易找到人问。

另外kong提供企业版本的API网关,当然也是基于ngnix+lua的,企业版本可以购买他们的技术支持、培训等服务、以及拥有界面的管理、监控等功能。

5、公有云还是私有云

现在的亚马逊、阿里、腾讯云都在提供基础公有云的API网关,当然这些网关的基础功能肯定是没有问题,但是二次开发,扩展功能、监控功能可能就不能满足部分用户的定制需求了。

另外很多企业因为自身信息安全的原因,不能使用外网公有网的API网关服务,这样就只有选择私有云的方案了。

在需求上如果基于公有云的API网关只能做到由内部人员为外网人员申请应用,无法做到定制的合作伙伴门户,这也不适合于部分企业的需求。

如果作为微服务网关,大多数情况下是希望网关服务器和服务提供方服务器是要在内网的,在这里情况下也只有私有云的API网关才能满足需求。

综合上面的分析,基础公有云的API网关只有满足一部分简单客户的需求,对于很多企业来说私有云的API网关才是正确的选择。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1385315.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

良心推荐!几款收藏的神级IDEA插件分享

本文已收录至Github,推荐阅读 👉 Java随想录 微信公众号:Java随想录 文章目录 CodeGlanceGsonFormatPOJO to JsonRainbow BracketsTranslationLombokMaven HelperAlibaba Java Code GuidelinesGenerateAllSetterMybatisXChinese (Simplified…

有哪些品牌的超声波清洗机是值得入手的?超声波清洗机推荐

作为一个既对生活品质有追求,又只想躺平的懒人,一直在努力尝试让轻松的生活少一点绊脚石,而其中最重要的一个,就是清洗眼镜清洗日常生活的一些小物件,讲真,洗这些东西有时候就跟下班回家的KPI一样。白天不累…

Linux 内核大转变:是否将迈入现代 C++ 的时代?

Linux开发者 H. Peter Anvin 在邮件列表中重启了关于 Linux内核C代码转换为C的讨论,并陈述了自己的观点。说之前先看一下这个话题的历史背景。 早在2018年4月1日,Andrew Pinski提议将 Linux 内核源码转为 C,在文中写道之所以引入是由于以下优…

安全生产管理平台——革新传统安全生产管理方式,重塑企业安全文化

安全生产管理在现代企业中占据着至关重要的地位。传统的安全生产管理方式虽然在一定程度上能够保障企业的生产安全,但随着企业规模的不断扩大和生产环境的日益复杂,其局限性也愈发凸显。而安全生产管理平台的出现,正是为了解决这一问题。 平台…

相信我,努力真的有用!

2023年对很多人来说都是异常艰辛的一年,大环境下的每个人都面对着或多或少的挑战,在这一年的时间里,身边的朋友陆陆续续的跳槽、创业、再就业,结婚,生娃,回老家,每个人渐渐的在时代面前或妥协或…

基于物联网设计的智能储物柜(4G+华为云IOT+微信小程序)

一、项目介绍 在游乐场、商场、景区等人流量较大的地方,往往存在用户需要临时存放物品的情况,例如行李箱、外套、购物袋等。为了满足用户的储物需求,并提供更加便捷的服务体验,当前设计了一款物联网智能储物柜。 该智能储物柜通…

Embedding Watermarks into Deep Neural Networks

将水印嵌入深度神经网络 ABSTRACT 最近在深度神经网络领域取得了显著的进展。分享深度神经网络的训练模型对于这些系统的快速研究课并发进展至关重要。与此同时,保护共享训练模型的权利也变得十分必要。为此我们提议使用数字水印技术来保护知识产权,并…

手把手教你学会接口自动化系列十三-将所有的crm用例由json改为excel

本篇汇总我写接口自动化用到的所有excel数据如下: 登录模块 添加线索模块 添加场景模块

docker部署私人云盘nextcloud

首先查看效果 1.拉取镜像 docker pull nextcloud 2.创建目录 mkdir -p /data/nextcloud/{config,data,apps} 3.创建实例 docker run -itd --name yznextcloud -v /data/nextcloud/config:/var/www/html/config -v /data/nextcloud/data:/var/www/html/data -v /data/nextc…

交流插座电器漏电断路器的低功耗控制芯片D4140,内置桥式整流器漏电灵敏度可调,采用SOP8和DIP8 的封装形式

D4140 是一种用于交流插座电器漏电断路器的低功耗控制器。这些设备可以检测到接地的危险电流路径,例如设备掉进水中。在发生有害或致命的电击之前,断路器会断开线路。内置有整流桥,齐纳管稳压器,运算放大器,电流基准&a…

基于python的深度神经网络原理与实践

理论基础 什么是神经网络 我们知道深度学习是机器学习的一个分支,是一种以人工神经网络为架构,对数据进行表征学习的算法。而深度神经网络又是深度学习的一个分支,它在 wikipedia 上的解释如下: 深度神经网络(Deep N…

2024最新婚恋交友系统,PHP书写,前端UNI,前后端源码交付,支持二开,APP小程序H5,三端都有!

如何开发婚恋交友的软件 1、实名认证:每个申请注册用户必须提交真实可信的个人身份信息内容,并且必须通过平台的核查,然后才能正常使用。 2、用户量大:该平台汇聚了来自全国各地的未婚男女。用户可以线上发送私人信息&#xff0…

流程图用什么软件做?五款优质在线绘制工具看一看

流程图用什么软件做?现在,流程图已经成为了我们工作中不可或缺的工具。它能够清晰地展示各个步骤之间的关系,使我们更好地理解并优化流程。那么,在众多的流程图绘制工具中,哪一款最适合你呢?下面就给大家介…

C++输入输出和文件

文章目录 一. 流, 缓冲区和iostream文件二. 使用cout进行输出1. 用cout进行格式化2. 刷新输出缓冲区 三. 使用cin进行输入1. cin>>如何检查输入2. 流状态3. 其他istream类方法 四. 文件输入和输出1. 简单的文件I/O2. 文件模式3. 随机存取4. 内核格式化 To be continue...…

说说你对贪心算法、回溯算法的理解?应用场景?

一、贪心算法 贪心算法,又称贪婪算法,是算法设计中的一种思想 其期待每一个阶段都是局部最优的选择,从而达到全局最优,但是结果并不一定是最优的 举个零钱兑换的例子,如果你有1元、2元、5元的钱币数张,用…

odoo 一日一技 odoo去除业务模块的基础框架

基础介绍​​​ 为了单纯使用odoo基础框架,我将源码整理成四个版本,分为社区版、企业版、社区基础版(去除非必要的业务模块)、企业基础版(去除非必要的业务模块)。如图还可以这样创建四个对应配置文件。 这边以社区基础版为例 下面简单介绍一下这些模…

【Python数据可视化】matplotlib之绘制三维图形:三维散点图、三维柱状图、三维曲面图

文章传送门 Python 数据可视化matplotlib之绘制常用图形:折线图、柱状图(条形图)、饼图和直方图matplotlib之设置坐标:添加坐标轴名字、设置坐标范围、设置主次刻度、坐标轴文字旋转并标出坐标值matplotlib之增加图形内容&#x…

爬虫案例—爬取豆瓣电影最受欢迎的影评

爬虫案例—爬取豆瓣电影最受欢迎的影评 豆瓣影评网址:https://movie.douban.com/review/best/ 目标:爬取第一页的影评封面标题、评论内容、完整的评论内容 第一页页面截图如下: import requests from lxml import etree import re from bs…

前端开发必备:掌握正则表达式,轻松应对复杂的表单验证

前言 在前端开发中,经常需要处理 URL 地址、校验手机号合法性、提取域名等。正则表达式是一种常用的工具。通过使用正则表达式,我们可以对用户输入进行有效的验证,确保数据的合法性和完整性。本文将介绍一些常见的正则表达式,帮助…

【C#】当重复使用一段代码倒计时时,使用静态类和静态方法,实现简单的this扩展方法

欢迎来到《小5讲堂》 大家好,我是全栈小5。 这是《C#》序列文章,每篇文章将以博主理解的角度展开讲解, 特别是针对知识点的概念进行叙说,大部分文章将会对这些概念进行实际例子验证,以此达到加深对知识点的理解和掌握。…