Table of Contents

  1. 背景
  2. 作用
    1. 隔离
    2. 解耦
    3. 脚手架
  3. 带来的好处
    1. 企业级API网关需要具备的条件
    2. 企业环境下,API网关需要考虑哪些要素
  4. 业界常用的API网关方案
  5. 如何设计一个好的企业级API网关产品
    1. 网关的高性能设计
  6. 网关的高可用设计

背景

是出现在系统边界上的一个面向API的、串行集中式的强管控服务

API网关的流行,源于近几年来,移动应用与企业间互联需求的兴起。移动应用、企业互联,使得后台服务支持的对象,从以前单一的Web应用,扩展到多种使用场景,且每种使用场景对后台服务的要求都不尽相同。这不仅增加了后台服务的响应量,还增加了后台服务的复杂性。随着微服务架构概念的提出,API网关成为了微服务架构的一个标配组件。

作用

  • 第一类作用是隔离作用,作为企业系统边界,隔离外网系统与内网系统。
  • 第二类作用是解耦作用,通过解耦,使得微服务系统的各方能够独立、自由、高效、灵活地调整,而不用担心给其他方面带来影响。
  • 第三类作用是脚手架作用,提供了一个地点,方便通过扩展机制对请求进行一系列加工和处理。

隔离

API网关部署在防火墙外面,起到一层挡板作用,内部系统只接受API网关转发过来的请求。网关通过白名单或校验规则,对访问进行了初步的过滤。相比防火墙,这种软件实现的过滤规则,更加动态灵活。

解耦

有了API网关这一层,可以很好的解耦各方的相互依赖关系,让各方更加专注自己的目标。

  • 解耦功能与非功能
  • 解耦客户端与服务提供者
  • 网关层是否需要实现服务的编排? no

脚手架

网关层除了请求的路由、转发外,还需要负责安全、鉴权、限流、监控等。这些功能的实现方式,往往随着业务的变化不断调整。

带来的好处

  • 网关层对外部和内部进行了隔离,保障了后台服务的安全性。
  • 对外访问控制由网络层面转换成了运维层面,减少变更的流程和错误成本
  • 减少客户端与服务的耦合,服务可以独立发展。通过网关层来做映射。
  • 通过网关层聚合,减少外部访问的频次,提升访问效率。
  • 节约后端服务开发成本,减少上线风险。
  • 为服务熔断,灰度发布,线上测试提供简单方案。
  • 便于扩展。

企业级API网关需要具备的条件

应对大量的对外访问,另一方面,还要给对内的服务提供一定的安全保障。

除此之外,企业提供的API服务多种多样,API网关要能够对这些API的全生命周期进行便捷的管理,例如服务发布、调整、下架、计费、监控等。

企业环境下,API网关需要考虑哪些要素

  1. 安全性问题
  2. 性能问题
  3. 高可用问题
  4. 扩展性问题
  5. API高效运维的问题
  6. API全生命周期管理的问题

业界常用的API网关方案

  • Nginx+ Lua
  • SpringCloud Zuul
  • MashapeKong

如何设计一个好的企业级API网关产品

API 生命周期管理功能
开发和使用支持功能
安全防护功能
流量控制功能
请求管理功能
API交易功能

网关的高性能设计

网关的高性能设计->事件驱动的并发模型(nio)

网关的高可用设计

1、无状态设计原则
2、优雅下线原则
3、Slow start特性

原文:https://mp.weixin.qq.com/s/RuN5RfQfksQZRPACloqHEg