什么是API网关

简介: API网关是一种统一接收外部请求并转发至后端服务的中间层,具备请求路由、协议转换、鉴权、限流、熔断降级等功能。它简化了客户端与多个微服务之间的交互,提升了系统安全性与可维护性,常见实现有Kong、SOUL、Zuul等。

1.什么是API网关

可以简单理解为:他更像是一种思想,而不是一种具体的架构,在很多框架中都有体现,如国产的KONG,SOUL,SpringCloud中的ZUUL(NetFlix开源)都是网关的一种技术具体实现。

常见的API网关实现,其技术一般是依赖于:Netty + NIO + Servlet3.0 进行实现。

假设一种业务场景:服务1对外提供Http接口,同时依赖服务2的Dubbo协议接口,服务3的Http协议接口,服务4的SpringCloud协议,先不论接入的调试,至少我们项目在配置文件中,需要三个服务的地址或域名,每个环境都需要重新调试,对接三个系统。API网关就是帮助我们来解决这样一个场景的技术,我们不再需要单独调用每一个服务(当然还是可以单独调用的),只要将1,2,3,4服务全部暴露注册进网关,其余时候直接去网关请求就可以,网关负责转发,数据同步,请求对应的接口。既然可以完成请求,响应,转发,自然API网关就可以帮助我们实现鉴权,限流,熔断降级等效果。

一句话来说,API网关的功能就是接收并转发请求到实际的接口,然后将实际接口返回的数据返回给调用方。

2.为什么需要API网关

  • RPC协议转成HTTP

由于在内部开发中我们都是以RPC协议(thrift or dubbo)去做开发,暴露给内部服务,当外部服务需要使用这个接口的时候往往需要将RPC协议转换成HTTP协议。

  • 请求路由

在我们的系统中由于同一个接口新老两套系统都在使用,我们需要根据请求上下文将请求路由到对应的接口。

  • 统一鉴权

对于鉴权操作不涉及到业务逻辑,那么可以在网关层进行处理,不用下层到业务逻辑。

  • 统一监控

由于网关是外部服务的入口,所以我们可以在这里监控我们想要的数据,比如入参出参,链路时间。

  • 流量控制,熔断降级

对于流量控制,熔断降级非业务逻辑可以统一放到网关层。


3.常见API网关

---

京东

唯品会

有赞

阿里

Zuul

实现关键

servlet3.0

netty

servlet3.0

servlet3.0

servlet3.0

异步情况

servlet异步,rpc是否异步不清楚

全链路异步

全链路异步

全链路异步

Zuul1同步阻塞,Zuul2异步非阻塞

限流

---

---

平滑限流。最初是codis,后续换到每个单机的令牌桶限流。

1.基本流控:基于API的QPS做限流。2.运营流控:支持APP流量包,APP+API+USER的流控33.大促流控:APP访问API的权重流控。阿里开源:Sentinel

提供了jar包:spring-cloud-zuul-ratelimit。1.对请求的目标URL进行限流(例如:某个URL每分钟只允许调用多少次)。2.对客户端的访问IP进行限流(例如:某个IP每分钟只允许请求多少次)3.对某些特定用户或者用户组进行限流(例如:非VIP用户限制每分钟只允许调用100次某个API等)4.多维度混合的限流。此时,就需要实现一些限流规则的编排机制。与、或、非等关系。支持四种存储方式ConcurrentHashMap,Consul,Redis,数据库。

熔断降级

---

---

Hystrix

---

只支持服务级别熔断,不支持URL级别。

隔离

线程池隔离

---

信号量隔离

---

线程池隔离,信号量隔离

缓存

redis

---

二级缓存,本地缓存+Codis

HDCC 本地缓存,远程缓存,数据库

需要自己开发

泛化调用

---

http,https,http1,http2,二进制

dubbo,http,nova

hsf,dubbo,http,https,http2,http1

只支持http

相关文章
|
安全 算法
Higres 改造传统网关适合什么场景
Higres 改造传统网关适合什么场景
|
25天前
|
人工智能 关系型数据库 分布式数据库
多图,PolarDB 2026 开发者大会有感
解读阿里云PolarDB开发者大会上数据库的AI原生演进:从数据形态融合、模型算子化到湖库一体架构,PolarDB通过四大支柱构建面向智能体时代的统一数据基座,推动数据库向“AI in SQL”与自主治理的深度变革。
|
tengine 运维 Kubernetes
阿里巴巴重磅开源云原生网关: Higress
Higress 源自阿里巴巴内部电商、交易等核心生产场景的实践沉淀,遵循 Ingress/Gateway API 标准,将流量网关、微服务网关、安全网关三合一,并在此基础上扩展了服务管理插件、安全类插件和自定义插件,高度集成 K8s 和微服务生态,包括 Nacos 注册和配置、Sentinel 限流降级等能力,并支持规则变更毫秒级生效等热更新能力。
阿里巴巴重磅开源云原生网关: Higress
|
1月前
|
数据采集 安全 数据管理
一文讲清数据治理体系:数据标准、元数据管理、主数据管理、数据质量管理、数据安全、数据资产管理
本文分享企业数据治理五大核心模块的实战经验:从统一数据标准、管理元数据与主数据,到保障数据质量、安全及资产化运营,提供可落地的解决方案。附数据化建设知识地图与工具,助力团队提升数据可信度与使用效率。
|
8月前
|
人工智能 安全 API
Agent 工程师绕不开的必修课:API 网关 vs API 管理
本文探讨了“API管理”与“API网关”的起源、发展及差异,二者分别服务于API生命周期的不同阶段。API网关从流量网关演进至AI网关,承担运行时请求控制;API管理则从接口文档化发展到商业化平台,关注全生命周期治理。两者在实际应用中协同工作,通过分层架构和策略联动实现高效运营。未来,随着大模型应用的兴起,AI网关和MCP Server管理将成为新趋势,推动API技术迈入智能化和服务化的新阶段。
Agent 工程师绕不开的必修课:API 网关 vs API 管理
|
2月前
|
缓存 前端开发 JavaScript
Vue微服务架构实践:从单应用到微前端的落地方案
本文详解Vue微前端架构,针对大型项目面临的代码冗余、协作困难等问题,拆解从子应用改造、主应用搭建到部署优化的全流程。基于qiankun框架,实现团队独立开发、技术栈灵活、增量升级与独立部署,提升系统可维护性与扩展性,为中大型前端项目提供落地实践方案。
250 0
|
安全 测试技术 Go
Go语言在高并发场景下的应用
在当今互联网高速发展的时代,高并发已成为众多应用系统面临的核心问题。本文探讨了Go语言在高并发场景下的优势,并通过具体实例展示了其在实际应用中的效果和性能表现。
|
运维 Go 开发者
Go语言在微服务架构中的应用与优势
本文深入探讨了Go语言在构建微服务架构中的独特优势和实际应用。通过分析Go语言的核心特性,如简洁的语法、高效的并发处理能力以及强大的标准库支持,我们揭示了为何Go成为开发高性能微服务的首选语言。文章还详细介绍了Go语言在微服务架构中的几个关键应用场景,包括服务间通信、容器化部署和自动化运维等,旨在为读者提供实用的技术指导和启发。
|
监控 前端开发 中间件
网关中间件研发首选一站式API协作平台:Eolink
大家好我是路飞,今天这篇文章和大家聊聊企业级网关中间件开发者,对API管理方面的需求,以及如何选择一款高效且功能强大的API管理工具。
|
消息中间件 存储 中间件
中间件使用统一的标准和协议
【6月更文挑战第2天】
333 1