什么是API网关

简介: 本文系统阐述了API网关的核心概念与价值,结合SpringBoot+Dubbo+Zookeeper架构引入Soul等网关实践,解析其作为请求路由、协议转换、统一鉴权、限流熔断的枢纽作用,探讨主流网关如Zuul、Kong等技术实现与异步、限流、降级等关键能力,揭示为何API网关成为现代微服务架构不可或缺的一环。(238字)

在前面5章节,我们详细论述了如何在一个SpringBoot应用中,搭建Dubbo+Zookeeper,同时在此基础之上,引入了API GateWay-Soul(Soul只是API网关的一种,并非唯一也并非一定最优)。至少在使用层面上,我们有了基础的认知,在此基础之上,我们再回过头来看下,什么是API GateWay,以及他帮我们实现了什么?为什么现在越来越多的架构中都开始引入了API网关。
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

相关文章
|
存储 监控 数据可视化
日志分析对决:揭示 ELK 与 GrayLog 的优势和差异
日志分析对决:揭示 ELK 与 GrayLog 的优势和差异
3931 0
|
云安全 负载均衡 网络协议
阿里云waf简介和如何配置​
阿里云WAF(Web应用程序防火墙)是一种高效、智能的云安全服务,旨在保护Web应用程序免受各种网络攻击的威胁。它可防止诸如SQL注入、跨站点脚本(XSS)和跨站点请求伪造(CSRF)等攻击,有效保障了Web应用程序的安全性与稳定性。 阿里云WAF在Web应用程序与互联网之间构建一道安全屏障,通过拦截和检测恶意流量,防止攻击者对您的Web应用程序进行攻击。它不仅覆盖了常见的网络攻击类型,还针对新兴的攻击手段进行了防护设计,确保您的Web应用程序在面对各种威胁时都能得到全方位的保护。
|
人工智能 固态存储 安全
一文告诉你CXL是什么,有什么新的机会 (上)
> 1. 大数据AI/ML应用爆发驱动大内存需求,但内存增长受限,CXL互联方案应运而生 > 2. CXL分为1.0/2.0/3.0版本,分别提供直连、池化、Fabric能力,预计在2022年/203年/2025年之后市场可用,目前看来池化对于软件的影响最大 > 3. CXL更多是对于已有架构的性能优化,全新的机会不多,较大的机会在于系统软件、内存即服务,以及内存数据库和内存云结构 > 4. CXL大概率将成为跨计算引擎的内存结构标准,短期利好云厂商,长期会数据中心架构产生结构性的变革
5021 0
|
6月前
|
安全 Go Windows
Goland 解决在windows上 Cannot run program “D:\atool\goexe\myApp.exe 无法进行正常调试问题
GoLand运行Go程序时遇“应用程序控制策略已阻止此文件”错误,主因是Windows安全机制拦截未签名的.exe。推荐两法:①右键属性→勾选“解除锁定”;②用gops关联已启动进程调试,彻底绕过拦截。(239字)
1099 4
Goland 解决在windows上 Cannot run program “D:\atool\goexe\myApp.exe 无法进行正常调试问题
|
存储 运维 数据可视化
Jaeger,一个链路追踪神器!
在微服务架构中,一次请求可能经过多个服务节点,带来复杂的调用关系。如何追踪请求全链路、快速定位问题、优化性能,成为开发与运维的关键挑战。链路追踪(Tracing)技术应运而生,而 Jaeger 作为业界主流的开源分布式链路追踪系统,提供了强大的支持。本文将带你全面了解 Jaeger 的核心概念、架构原理、使用方式及实际项目中的落地方法,助你快速掌握链路追踪技术,提升系统的可观测性与稳定性。
1900 2
Jaeger,一个链路追踪神器!
|
7月前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 API 网关 2026 年 1 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要。
|
10月前
|
数据采集 存储 数据管理
元数据管理是什么?怎么管?
元数据管理是让数据成为真正资产的关键。它通过统一管理“关于数据的数据”,解决找数难、口径不一、追溯困难等问题,建立业务与技术间的共识,实现数据可发现、可理解、可信任,推动企业数据驱动落地。
|
7月前
|
缓存 监控 API
1M 上下文不是免费午餐:超过 200K 输入价格翻倍,怎么算账怎么控
Opus 4.6 首次为旗舰模型开放1M上下文,但输入超200K token即触发全请求价格翻倍(输入$10→$5/MTok,输出$37.5→$25/MTok)。需精准监控总输入token(含cache相关),善用RAG、裁剪、缓存与Batch API控本。
1811 4
|
9月前
|
缓存 安全 API
Gemini Enterprise中国落地技术路径解析与选型指南
随着Gemini在多模态与长上下文上的突破,中国企业加速引入其应用于金融、制造、电商等领域。但受限于数据合规、网络延迟等问题,直接调用海外API面临挑战。专业服务商由此兴起,通过AST动态脱敏、边缘加速(QUIC/HTTP3)、上下文缓存与语义路由等技术,解决合规、延迟与成本难题。穿扬科技凭借全栈技术成首选,114Cloud、APIHub、OpenRouter中国版及极速数据则各具场景优势,助力企业安全高效落地大模型应用。
848 4
|
11月前
|
Java Unix Go
【Java】(8)Stream流、文件File相关操作,IO的含义与运用
Java 为 I/O 提供了强大的而灵活的支持,使其更广泛地应用到文件传输和网络编程中。!但本节讲述最基本的和流与 I/O 相关的功能。我们将通过一个个例子来学习这些功能。
398 1

热门文章

最新文章