前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >API 网关 ( API gateway )

API 网关 ( API gateway )

作者头像
拿我格子衫来
发布于 2022-01-24 07:33:10
发布于 2022-01-24 07:33:10
5.7K0
举报
文章被收录于专栏:TopFETopFE

前言

在 IOT ( 物联网 )中,当我们的一些设备。例如( 监控、传感器等 )需要将收集到的数据和信息进行汇总时,我们就需要一个 API 网关来接收从千百个终端发出的请求,它实现对外统一接口,对内进行负载均衡的功能。极大的方便了 API系统 的开发与维护。如果有需要,API 网关也可以根据各终端使用的不同通信协议来进行协议适配,从而方便应用层进行数据采集和分析。

什么是 API 网关?

在想了解什么是API 网关 ( API Gateway ),首先我们需要了解什么是微服务。

微服务

微服务是一种用于构建应用的架构方案。微服务架构有别于更为传统的单体式方案,可将应用拆分成多个核心功能。每个功能都被称为一项服务,可以单独构建和部署,这意味着各项服务在工作(和出现故障)时不会相互影响。

我们依靠下面几个阶段来简单的了解一下,什么是微服务。

一、单机阶段 ( 所有服务一把梭 )

在一个项目的起步阶段,我们可能会把所有的功能放在一个项目内( 例如商城系统 )这样方便快速开发与迭代。

二、拓展阶段 ( 水平、垂直拓展 )

随着你公司的业务越来越大,服务越来越广,你将开始考虑进行水平或垂直拓展了。

  • 水平拓展:简单说就是将服务放到多台机器上进行负载均衡。
  • 垂直拓展:简单说就是提升单台服务器的性能( 俗称氪金 )
三、微服务阶段 ( 对服务进行拆分 )

当你的公司变得更大,开发人员也变得多而杂。项目也随着时间变得特别臃肿的时候。你就需要将服务进行拆分,人员按照服务类型进行分组。

例如商城系统,可以分为 用户系统、交易系统、商品系统等等。

为什么要有API 网关?

我们已经了解了什么是微服务。那么为什么微服务要有API 网关呢?

疯狂的客户端 ( Mad client )

哈哈,开个玩笑的标题。

如果不使用 API 网关,那么你将会立马面临一个棘手的问题。

如图所示,当你有三个服务( 服务1、服务2、服务3 )时,如果没有API 网关,你的客户端就需要记住每个微服务的地址。例如:服务1 ( http://xxx.com )、服务2 ( http://yyy.com )、服务3 ( http://zzz.com )。

当你有几十个微服务时,相信我,你的前端一定会把你杀了的。

当然,Api 网关可不仅仅有路由的功能。

API 网关可以干什么?

下面我们来简单捋一捋 API 网关都可以做啥吧。

  • 统一入口 : 也就是刚才说的路由功能,API 网关可以通过内部维护路由表来进行反向代理。

什么是反向代理,什么是正向代理。

  • 场景1 ( 正向代理 ) :你们公司有内部网络限制,但是你想登陆公司内部网站处理一些业务。由于你无法直接登陆,所以你需要一个中继代理,通过一个中继的代理服务器来转发你的请求到内部服务器。进行信息交流。
  • 场景2 ( 反向代理 ):你想访问一个网站,例如 “www.moudu.com”,当你输入这个网址时,某度的网关会将你的请求进行路由到别的服务器上处理。

由此可见一个简单的规则就是:当你知道中继服务器和最终目的的地址时为正向代理,当你知道中继服务地址而不知道目的服务的地址时为反向代理。

  • 安全 : 由于统一个入口,你可以将所有服务的权限、黑名单等涉及身份验证的部分放在网关统一处理。
  • 限流 : 可以基于流量计算分析和限流规则对访问微服务的请求进行限流。
  • 缓存 : 对一些静态数据等进行缓存。
  • 日志 : 可以通过日志系统对所有的请求和响应进行记录,便于日后分析。
  • 监控 : 基于日志系统获取的请求响应数据、时间等进行实时性能监控。
  • 重试 : 对于异常请求进行重试。
  • 熔断 : 对一些故障服务进行服务降级。

什么是服务降级? 当服务器接受到剧烈的压力或者服务出现故障时,根据实时的流量对一些服务和页面进行不处理或简单处理的方式 ( 如上图 )。用以保证核心服务的正常运行。

一些常见的解决方案

我们大致了解了 API 网关的功能,接下来我们来讨论一下一些常见的解决方案

  • Nginx

由 C 编写的异步的网页服务器可用作反向代理、负载均衡等。C 语言 与 "epoll and queue"模式 为 Nginx 带来超高的性能与低内存开销的优势。使得接下来的很多 API 网关都基于 Nginx 进行实现。

  • Kong

基于 Nginx 与 OpenResty 的API 网关,其插件体系结构使得 Kong 获得了强大的扩展能力。它的总体分为三部分:

  • Nginx 提供进程管理和请求的处理。
  • OpenResty 提供 Lua 脚本 ( 一个高性能的脚本 ) 的集成与 nginx 的扩展。
  • kong 集成上述两部分并提供一些持久化配置。

  • Apache APISIX

基于云原生设计的 API 网关,使用 etcd ( 一个分布式的强一致性 K-V 数据库 )与 高性能的 lua 脚本 和 Nginx 为 Apache APISIX 提供了强大的容器化能力。

  • Spring Cloud Zuul

Spring Cloud Netflix 子项目的核心组件之一,基于Java语言开发、过滤器模式设计。并需要集成其他子项目实现 API 网关功能:

  • Hystix: 用于流量控制,实现流量限制。
  • Ribbon:提供负载均衡能力,并可以提供网络性能和错误的信息。
  • Turbine: 实时收集一些指标,用于监控服务与网络流量。
  • Archaius:提供动态配置的能力。

总结

本编文章讲解了一下什么是 API 网关、API 网关 可以解决什么问题。并对一些常见的解决方案进行了简单分析。下面将对如何选型进行一些简单建议:

  • Nginx:如果公司业务小、所需要的功能较少可以使用 Nginx 来快速搭建。
  • Kong:社区活跃度较高,基于它的插件体系结构,如果对功能和扩展性要求较高可以选择。
  • Apache APISIX :云原声和多协议支持( MQTT、Dubbo等)对 IOT ( 物联网 )的服务比较友好。
  • Spring Cloud Zuul: 基于Spring cloud 的实现方案,对于 Java 微服务较为友好。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
国产API 网关Apache APISIX 上手
APISIX 是一个高性能、可扩展的微服务 API 网关。它是基于 Nginx 和 etcd 来实现,和传统 API 网关相比,
冷冷
2019/10/28
1.8K0
什么是API网关?
API 网关(API Gateway)是一种服务器,充当应用程序编程接口(API)的入口点,执行多种任务以简化、安全和优化 API 通信。API 网关的主要功能包括:
coderidea
2024/02/01
5280
什么是API网关?
CloudBluePrint-Chapter 1.6 : 云上应用技术架构-API网关
在分布式架构中,一个复杂的应用被拆分为多个小而独立的服务,每个服务都运行在自己的进程中,并通过轻量级的机制(如HTTP RESTful API)进行通信。每个服务都围绕一个特定的业务功能进行构建,并可以独立地进行开发、部署和扩展。
行者深蓝
2023/09/07
4840
API 网关的功能用途及实现方式
API 经济生态链已经在全球范围覆盖, 绝大多数企业都已经走在数字化转型的道路上,API 成为企业连接业务的核心载体, 并产生巨大的盈利空间。快速增长的 API 规模以及调用量,使得企业 IT 在架构上、模式上面临着更多的挑战。
东风微鸣
2022/04/22
1.6K0
API 网关的功能用途及实现方式
kong笔记——认识kong
最近公司打算重构API网关,给定的硬性条件是支持lua脚本,kubernetes可部署,可解析lua,另外需要支持身份认证,IP黑白名单,限流,负载均衡等一些功能,为此,在技术选型上锁定了kong以及APISIX,最终选择了kong。
全栈程序员站长
2022/09/13
1.5K1
开源API网关,到底哪个强?
本文主要分析了 Nginx、Kong、APISIX、Tyk、Zuul、Gravitee 几个开源 API 网关架构及基本功能,测试了一定场景下各个 API 网关的性能,文末附有源码地址。
Java识堂
2021/09/03
4.1K0
基于 Apache APISIX 的全流量 API 网关
温铭 支流科技 CEO 兼联合创始人 本文将从云原生时代的机遇和挑战说起,介绍一个全新的开源高性能云原生 API 网关——Apache APISIX,探讨如何解决云原生时代 API 网关所面临的一些痛点,最后介绍该开源项目未来的规划。 背景 云原生的机遇和挑战 很多应用和服务都在向微服务、容器化迁移,形成新的云原生时代。云原生是下一个 5-10 年的技术颠覆,重写了传统企业的技术架构,例如云原生中的 Kubernetes 颠覆了传统操作系统,所有的“主机”(node 上的容器)由 Kubernetes
博文视点Broadview
2023/05/19
1.7K0
基于 Apache APISIX 的全流量 API 网关
网关大解密:探索Spring Cloud Alibaba中Gateway的奥秘
在微服务的世界里,网关是连接不同服务的纽带,就像城市的大门,守护着通往不同区域的通道。而Spring Cloud Alibaba中的Gateway,更像是这座城市的最先进的智能城门,拥有着令人瞩目的技术魔法。让我们揭开网关的神秘面纱,一同探索其不可思议的功能。
一只牛博
2025/05/30
70
微服务中网关(API Gateway)的技术选型
用 Spring Cloud 微服务实战中,大家都知道用 Zuul 作为智能网关。API 网关(API Gateway)主要负责服务请求路由、组合及协议转换。下面是大家的总结:
天涯泪小武
2019/06/26
7.6K0
国产最强开源 API 网关,没有之一,不接受任何反驳!
来源:https://zhuanlan.zhihu.com/p/358862217 强烈推荐大家试试国产开源的 API 网关 https://github.com/apache/apisix,非常不错。 本文,我们会看到 APISIX 和其它开源的网关对比,给胖友的武器库提供更多选择! “ 这篇文章由刚哥授权分享,刚哥是 Splunk Information Technology 的架构师,Linkedin:https://www.linkedin.com/in/taogang/。 本文主要分析了 NGINX、Kong、APISIX、Tyk、Zuul、Gravitee 几个开源 API 网关架构及基本功能,测试了一定场景下各个 API 网关的性能,文末附有源码地址。” 正文从这里开始: 春未老,风细柳斜斜。试上超然台上望,半壕春水一城花。烟雨暗千家。 寒食后,酒醒却咨嗟。休对故人思故国,且将新火试新茶。诗酒趁年华。 苏轼·送《望江南·超然台作》 温哥华的春天来了,上面的图就是我家门口的 Marine Gaetway,我今天就在这春色中和大家探讨一下 API Gateway。
用户1516716
2021/07/29
10.4K0
一文速通Nginx网关与gateway网关区分
网关的角色是作为一个 API 架构,用来保护、增强和控制对于 API 服务的访问。API 网关是一个处于应用程序或服务(提供 REST API 接口服务)之前的系统,用来管理授权、访问控制和流量限制等,这样 REST API 接口服务就被 API 网关保护起来,对所有的调用者透明。因此,隐藏在 API 网关后面的业务系统就可以专注于创建和管理服务,而不用去处理这些策略性的基础设施。
一个风轻云淡
2023/10/25
6.6K0
一文读懂云原生网关
本文帮助大家读懂网关的基本概念,云原生网关的功能和规范,对比主流云原生网关产品做选型参考,限于篇幅,后续文章中会详细介绍几款主流网关的实现技术。
CNCF
2022/11/29
4.4K0
微服务架构开发实战:API网关意义和常见API网关的实现方式
API网关定位为应用系统服务接口的网关,区别于网络技术的网关,但是原理是一样的。API网关统一服务入口,可方便实现对平台众多服务接口进行管控,如对访问服务的身份认证、防报文重放与防数据篡改、功能调用的业务鉴权,以及响应数据的脱敏、流量与并发控制,甚至基于API调用的计量或计费等。
愿天堂没有BUG
2022/10/28
1.6K0
微服务架构开发实战:API网关意义和常见API网关的实现方式
其实,对于微服务网关的主要功能和技术选型,你还需要深入理解下
微服务网关作为微服务后端服务的统一入口(Entry Point),它可以统筹管理后端服务,主要分为数据平面(Data Plane)和控制平面(Control Plane)。
愿天堂没有BUG
2022/10/28
9960
其实,对于微服务网关的主要功能和技术选型,你还需要深入理解下
云原生时代,API 网关为何如此重要?
【CSDN 编者按】API是Application Program Interface,应用程序连接接口的缩写,作为数据传输流转的重要通道,API网关更成为云原生时代的重要入口。 作者 | 温铭,Apache APISIX PMC主席 责编 | 张红月 出品 | CSDN(ID:CSDNnews) API 是各个不同的应用程序和系统之间互相调用和传输数据的标准方式。在很多的开发团队中都是使用 API-first 的模式,围绕着 API 来进行产品的迭代,包括测试、Mock、文档、API 网关、Dev Po
博文视点Broadview
2023/04/04
7170
云原生时代,API 网关为何如此重要?
国产最强开源 API 网关,没有之一,不接受任何反驳!
本文主要分析了 NGINX、Kong、APISIX、Tyk、Zuul、Gravitee 几个开源 API 网关架构及基本功能,测试了一定场景下各个 API 网关的性能。
业余草
2021/12/06
4.3K0
国产最强开源 API 网关,没有之一,不接受任何反驳!
Kong入门学习实践(1)基础概念快览
最近在学习Kong网关,因此根据老习惯,我会将我的学习过程记录下来,一来体系化整理,二来作为笔记供将来翻看。由于我司会直接使用Kong企业版,学习过程中我会使用Kong开源版。
Edison Zhou
2023/07/09
3850
Kong入门学习实践(1)基础概念快览
微服务网关方案:Kong & Nacos
文章连接:https://mp.weixin.qq.com/s/Kk6Cl7n0sFGgCyyZtExa6A
程序员架构进阶
2021/04/14
2.1K0
微服务网关方案:Kong & Nacos
云原生架构下的 API 网关实践:Kong (一)
,有点懒怠。最近抽空捣鼓了 Kong 网关的使用实践,微服务网关之前的文章也写过,读者可以翻看之前的文章推送。插件是 Kong 扩展的重要特性,这次除了会介绍 Kong 的相关实践之外,还会讲解 Kong 自定义插件的实现。
aoho求索
2019/07/30
2.6K0
云原生架构下的 API 网关实践:Kong (一)
如何选择适合你的微服务 API 网关:对比 Kong、APISIX、Trk、Apigee 和其他网关
API 网关并非一个新兴的概念,在十几年前就已经存在了,它的作用主要是作为流量的入口,统一的处理和业务相关的请求,让请求更加安全、快速和准确的得到处理。它有以下传统的功能:
温铭@APISIX
2020/02/24
4.1K1
相关推荐
国产API 网关Apache APISIX 上手
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档