API网关基本概念学习

背景介绍

随着公司规模扩大,业务线越来越多。每个业务线肯定会存在一些重复的系统能力。为了提高开发效率,常会将一些公共的能力沉淀,日后复用,从而避免重复工作,提升研发效率。

随着微服务的流行,开始出现API网关的概念。介于外部用户与内部系统之间的,作为一个入口,实现对外部请求的协议转换、流量控制、接口监控、鉴权等功能。而这些能力是不同服务所通用,最终实现能力复用,提升研发管理效率。

在没有统一服务的时候,我们自己会独立开发一个应用层,介于外部客户端和内部服务见。实现协议转换、流量控制、接口监控、鉴权等功能。

我们实现的这个中间层将http请求转换为内部系统所使用的rpc请求,最后将内部服务数据聚合,返回给客户端。一旦业务线过度,重复劳动就开始出现。因此需要API网关,统一完成这些工作。

主要应用

  • 对内:为公司自己的业务PC、H5、移动APP端提供统计的接入能力,实现基本的鉴权、限流能力。避免业重复开发。
  • 对外:第三方希望使用公司服务的接口,为了安全性、可监控,可以通过API网关对第三方暴露调用接口。

结构简述

API网关基本概念学习_第1张图片
如前所述请求可能来自公司内部开发的APP及PC客户端,也可能是第三方接入系统。在访问内部业务系统前经过API网关。

API网关简单看有4部分构成
功能模块:提供限流、缓存、鉴权等能力。甚至可以是引入业务自定义功能的能力。
路由模块:将功能模块处理过的流量路由到业务系统。
管理模块:由于功能模块提供的各种能力与业务相关。每个业务对于限流、鉴权等能力配置不同。因此通过管理模块来进行配置,此外配置对外暴露的API,并提供相应的说明。
监控模块:当有流量时,对各种访问情况进行记录。当监控数据异常时,产生告警。

相关系统

API网关有很多现成的系统可供使用,如下可详细了解。

  • zuul: https://github.com/Netflix/zuul
  • 阿里移动API网关: https://juejin.im/entry/5b0ce5156fb9a009ff08a690
  • spring-cloud-gateway:https://github.com/spring-cloud/spring-cloud-gateway
  • kong:https://github.com/Kong/kong

总结

学习基本概念与结构,并了解可用的开源项目,主要目标是更好的使用系统。

你可能感兴趣的:(系统)