问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

API网关基础知识

创作时间:
作者:
@小白创作中心

API网关基础知识

引用
CSDN
1.
https://blog.csdn.net/2401_86844317/article/details/144561575

API网关作为微服务架构中的重要组件,负责处理服务间的通信和流量管理。本文将详细介绍API网关的核心概念、功能模块以及主流网关系统的实现原理和使用场景,帮助读者全面了解API网关的技术细节。

什么是网关?

在微服务架构中,一个系统被拆分为多个独立的服务,每个服务都需要实现一些通用功能,如安全认证、流量控制、日志记录等。如果没有网关,这些功能就需要在每个服务中单独实现,这不仅增加了开发成本,还难以实现全局统一管理。因此,API网关应运而生,它主要负责两件事:请求转发请求过滤

虽然引入网关会增加一次网络转发,但性能影响微乎其微,尤其是在内网环境下。为了确保高可用性,通常会在网关外层使用Nginx等负载均衡工具进行负载转发。下图展示了基于Nginx的服务端负载均衡架构:

网关能提供哪些功能?

一个完整的API网关通常具备以下功能:

  • 请求转发:将请求转发到目标微服务。
  • 负载均衡:根据微服务实例的负载情况实现动态负载均衡。
  • 安全认证:进行身份验证和权限控制。
  • 参数校验:支持参数映射与校验逻辑。
  • 日志记录:记录所有请求的行为日志。
  • 监控告警:从多个维度进行监控并提供告警机制。
  • 流量控制:限制某一时刻内的请求数。
  • 熔断降级:实时监控请求统计信息,达到失败阈值后自动熔断。
  • 响应缓存:缓存静态或更新不频繁的数据。
  • 响应聚合:整合多个服务的响应。
  • 灰度发布:动态分流到不同服务版本。
  • 异常处理:转换业务服务返回的异常响应。
  • API文档:生成API文档供外部开发人员使用。
  • 协议转换:整合不同风格和实现技术的微服务。
  • 证书管理:统一管理SSL证书。

有哪些常见的网关系统?

Netflix Zuul

Zuul是Netflix开发的一款网关服务,支持动态路由、监控、弹性伸缩和安全功能。它基于Java技术栈开发,可以与Eureka、Ribbon、Hystrix等组件配合使用。Zuul通过过滤器机制来处理请求,支持自定义过滤器开发。Zuul 1.x基于同步IO,性能较差;而Zuul 2.x基于Netty实现了异步IO,性能大幅提升。



Spring Cloud Gateway

Spring Cloud Gateway是Spring Cloud生态系统中的网关组件,旨在替代Zuul 1.x。它基于Spring WebFlux实现,底层使用Netty提供同步非阻塞I/O,性能优异。Spring Cloud Gateway通过Filter链的方式提供安全、监控、限流等功能,目前在Spring Cloud生态中得到广泛支持。

OpenResty

OpenResty是一个基于Nginx和Lua的高性能Web平台,内部集成了大量Lua库和第三方模块。它通过ngx_lua和stream_lua等模块将Lua嵌入Nginx,使得用户可以通过Lua脚本扩展网关功能,如自定义路由规则、过滤器和缓存策略等。

Kong

Kong是一款基于OpenResty的高性能API网关,主要由Kong Server、数据存储组件(如Cassandra或PostgreSQL)和管理界面组成。Kong提供了丰富的插件机制,支持Lua、Go、JavaScript、Python等多种语言开发插件,通过插件可以实现限流、安全策略、路由、负载均衡等功能。


APISIX

APISIX是基于OpenResty和etcd的高性能API网关,支持动态路由和插件热加载,特别适合微服务架构下的API管理。APISIX与SkyWalking、Zipkin、Prometheus等DevOps工具集成方便,支持多种编程语言开发插件,包括通过Plugin Runner和Wasm(WebAssembly)方式。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号