前言

在微服务架构中,API 网关起着不可或缺的重要作用。

简单举个例子,API 相当于是我们获取信息的数据线,而当这样的“数据线”过多时,我们很难对这么多的 API 进行管控。这时候的 API 网关就相当于是一个收纳工具+ 保护套,帮我们把各式各样的 API 进行统一管理,并维护 API 的安全性与稳定性。

然而实际上API网关的功能远远不止上述举例中的那么简单,它要更加强大更高效。今天我们就来详细介绍一下 API 网关与 API 网关的功能。

API 网关介绍

API 网关,API Gateway,即两个相互独立的局域网之间通过路由器进行通信,中间的路由被称之为网关。

任何一个应用系统如果需要被其他系统调用,就需要暴露 API,这些 API 代表着一个一个的功能点。如果两个系统中间通信,在系统之间加上一个中介者协助 API 的调用,这个中介者就是 API 网关。

API网关架构图 网关和api网关_API网关架构图

API 网关主要功能

API 网关基本功能包含了 统一接入协议适配流量管理与容错、以及安全防护四大基本功能。

API 网关 以统一接入为核心功能,然后将请求的协议转换为内部的接口协议,在调用得过程中还要有限流、降级、熔断等 容错的方式来保护网关的整体稳定,同时网关还要做到基本的安全防护,以及黑白名单等基本安全措施。

统一接入

提供统一的入口 来访问内部的 API , 隔离外部访问与内部系统,保护微服务 API 。统一对外的 API ,方便外部调用,对内再调用相应的微服务 API 。

简单而言 API 就是对外提供统一的接口,内部再去条用相应的请求接口。对外接收客户端请求,对内调用微服务 REST API 。

API网关架构图 网关和api网关_接口测试_02

请求适配

API 网关并不是仅仅进行客户端请求的路由,API 网关还负责对请求进行处理,将外部请求适配成内部请求,请求的适配主要有:

  • 协议转化

在微服务系统中不一定都是使用同一种协议进行通信,除了 http 协议还可以转换成其他更合适更高效得协议。

API网关架构图 网关和api网关_eolinker_03

  • 数据校验与转换

校验必要的数据字段,或者进行数据格式转化

  • 相应合并

把业务上需要调用多个服务接口才能完成的工作合并成一次调用 对外统一提供服务。

流量管理与容错

API 网关作为整个微服务系统的入口,需要对请求流量进行监控,避免造成内部过载或 API 网关崩溃。

  • 负载均衡

负载均衡是分布式架构的重点,负载均衡机制决定着整个服务集群的性能与稳定。

API网关架构图 网关和api网关_eolinker_04

  • 限流

限流是必须的组件,限流做不好的话,请求量突增时很容易导致业务放的服务挂掉,

  • 熔断和降级

网关的性能决定整体请求的响应,若某个服务挂掉、接口影响严重超时,API 网关会对故障服务进行熔断降级,直接返回错误。

API网关架构图 网关和api网关_eolinker_05

安全防护

API 网关通过提供额外的安全层帮助阻止大规模攻击。

这些攻击包括 SQL 注入,XML 解析漏洞和 DoS 攻击, API 网关实现了安全层,降低了各个微服务的复杂度。

  • 安全认证
  • 基于 Token 的客户端安全策略和访问权限
  • 基于 Https 的传输加密,
  • 基于 OAuth 2.0 的服务安全认证
  • 黑白名单

构建黑白名单可以将一些恶意请求的 ip 地址禁止访问系统。

API网关架构图 网关和api网关_eolinker_06

总结

API 网关的功能主要包含以上四点,总的来说, API 网关能实现对外统一接口,对内进行负载均衡的功能也极大地方便了 API 系统的开发与维护。

上述演示图中的 API 微服务网关工具为 Eolink ,它是一个能够实现高性能 HTTP 转发、API 访问权限控制等目的的微服务网关,拥有强大的自定义插件系统可以自行扩展,能够快速帮助企业进行 API 服务治理、提高 API 服务的稳定性和安全性。