微服务架构将原本一个庞大的业务系统被拆分成许多粒度很小的系统进行独立部署和维护。这必然会导致跨系统交互复杂度增加、不同服务之间依赖关系变得更加复杂,这给微服务的生命周期管理和版本变更管理带来极大的挑战。基于API网关,可以将微服务之间的直接依赖转化为对API网关的依赖,从而降低耦合关系。

如图1所示,API网关是为一组微服务提供统一API访问的组件,基于不同的场景,其承担的职责从单纯请求转发到安全保证、流量控制、可观察性等高级功能。其协议转换功能使得散落部署的异构的微服务系统在API 层面统一起来。API网关本质上是一组专门用于网络请求转发的应用服务实例,作为集群的入站流量入口,调用服务都要经过API网关进行访问,网关可以对API进行统一管控,例如认证、鉴权、流量控制、协议转换、监控等。

微服务网关后台管理页面源码 微服务网关的主要功能_请求转发

                                                                                                                                       图1 API网关功能概览

 

进行API网的关技术选型时,更新的时效性和支持微服务的量级是最重要的衡量指标。API网关所包涵的功能范围可归纳为以下五点∶

1.智能路由

智能路由微服务的唯一访问入口,负载均衡是API网关的最基本的功能,用户访问统一的API网关入口,并由API网关选择上游服务,以及状态健康的实例。基于路由和负载均衡这两个基本功能,API网关就可以提供高级的灰度发布功能,管理人员可以通过设置规则将请求转发至应用的不同版本。

2.可观测性

API网关作为流量入口,可提供统一的日志和Tracing解决方案。

3.流量控制

在大型微服务系统中,微服务之间的依赖关系可以非常复杂。限流规则可以使微服务设置自己能接收的最大请求数,超出的请求会被直接返回,保护系统不被过量请求压垮。熔断规则使得微服务可设置访问上游服务的最大并发数,防止把上游压垮,缓存机制可以进一步减少对上游请求的压力。

4.安全保证

微服务架构下,微服务和微服务之间的通信均通过网络调用来完成。为了保证所提供的服务不被滥用,因此,认证、授权等安全控制是API网关考量的重点,API网关的集中部署和统一管理特性使得其能够以较小的代价提供统一认证授权功能,供不同微服务进行集成。

5.可管理性

统一的网关升级将会速度加快,因为提供服务的组件是集中部署和管理的,服务的接入成本低,组件管理成本也较低。