概念
我们知道在微服务架构中,大型服务都被拆分成了独立的微服务,每个微服务通常会以RESTFUL API的形式对外提供服务。API网关是所有服务调用的统一出入口,由于这种特殊的地位,我们可以在API网关实现多种非功能性需求,比如:安全、流量、路由等。
基本功能
一个API网关的基本功能包含了统一接入、协议适配、流量管理与容错、以及安全防护,这四大基本功能构成了网关的核心功能。网关首要的功能是负责统一接入,然后将请求的协议转换成内部的接口协议,在调用的过程中还要有限流、降级、熔断等容错的方式来保护网关的整体稳定,同时网关还要做到基本的安全防护(防刷控制),以及黑白名单(比如IP白名单)等基本安全措施,如下图所示:

API网关的作用

-
统一对外接口
当用户需要集成不同产品或者服务之间的功能,调用不同服务提供的能力。利用APIGateway可以让用户在不感知服务边缘的情况下,利用统一的接口组装服务。
对于公司内部不同的服务,提供的接口可能在风格上存在一定的差异,通过APIGateway可以统一这种差异。 当内部服务修改时,可以通过APIGateway进行适配,不需要调用方进行调整。 -
增加系统安全性
APIGateway对外部和内部进行了隔离,减少对外暴露服务可以增加系统安全性,保障了后台服务的安全性。 -
统一鉴权
通过APIGateway对访问进行统一鉴权,不需要每个应用单独对调用方进行鉴权,应用可以专注业务。 -
服务注册与授权
可以控制调用方可以使用和不可以使用的服务。 -
服务限流
通过APIGateway可以对调用方调用每个接口的每日调用及总调用次数限制。 -
提升预发能力
为服务熔断,灰度发布,线上测试提供简单方案。 -
全链路跟踪
API网关选型
- ZUUL
zuul是Netflx公司开源的一个API网关组件,Spring Cloud对其进行二次基于Spring Boot的注解式封装做到开箱即用。目前来说,结合sring Cloud 提供的服务治理体系,可以做到请求转发,根据配置或者默认的路由规则进行路由和Load Balance,无痛集成hystrix。 - Spring Cloud Gateway
Spring Cloud Gateway是基于Spring生态系统之上构建的API网关,包括: Spring 5,Spring Boot 2和Project Reactor。Spring cloud Gateway旨在提供一种简单而有效的方法来路由到API,并为它们提供跨领域的关注点,例如:安全性,监视/指标,限流等。由于Spring 5.0支持Netty,Http2,而Spring Boot 2.0支持 Spring 5.0,因此Spring Cloud Gateway支持 Netty和Http2顺理成章。 - Kong
Kong 是 Mashape提供的一款API管理软件,它本身是基于Ngnix + Lua的,但比 Nginx提供了更简单的配置方式,数据采用了Apache Cassandra/PostgresSQL存储,并且提供了一些优秀的插件,比如验证,日志,调用频次限制等。Kong非常诱人的地方就是提供了大量的插件来扩展应用,通过设置不同的插件可以为服务提供各种增强的功能。 - APISIX
Apache APISIX 是一个动态、实时、高性能的 API 网关,提供负载均衡、动态上游、灰度发布、精细化路由、限流限速、服务降级、服务熔断、身份认证、可观测性等数百项功能。在认证鉴权方面,APISIX 也是提供了非常多且方便的途径。
参考:网关概述

API网关作为微服务架构中的重要组件,负责统一接入、协议适配、流量管理和安全防护。其作用包括统一对外接口、增加系统安全性、统一鉴权和限流。文章提到了Zuul、SpringCloudGateway、Kong和APISIX等API网关的选型选项,分别介绍了它们的特点和适用场景。
376

被折叠的 条评论
为什么被折叠?



