网关的介绍

API Gateway 是服务于 API 的集中式网关。

无论是微服务体系下的系统架构、还是对外界提供的服务接入,面对复杂的接入环境以及服务保障的要求,都要有一层安全、过滤保护的机制,实现诸如 安全认证、流量控制、日志、监控等诸多功能。

如果没有API Gateway,每个服务中就要单独实现,诸多要求和实现逻辑会令开发者繁琐不堪,根本没有整体架构可言。

如果把这些功能统一前移某一层独立支持,实现 API Gateway as a Service,让各个服务直接接入,在管理平台上管理,可视化配置等等, 这样就实现了一个全局的视图统一管理这些功能。这就是 API Gateway。

一般情况下会要求API Gateway提供请求路由、服务注册、负载均衡、安全认证、弹力设计(容灾、流控、熔断)、日志等功能。

微服务下网关

除了上面的定义外,微服务网关和传统意义上的 API 网关还有一些不同。

  • 动态更新:微服务的架构下,服务经常频繁的变化,如横向扩充、故障恢复、热备、切换等,K8S下IP节点等频繁变动。
  • 更低延迟: 通常动态会要求一定的延迟,因为复杂度增加。在微服务里面,对于延迟要求比较高
  • 更集中的管理 API:在一个大型的服务中,通常会要求只有一个网关服务,作为统一的入口,这就要求私有逻辑的支持,如各类的自定义插件支持

API Gateway方案

API Gateway在业内已经有非常多的成熟开源方案,如果按实现语言以及成熟度来讲,主流有以下的几个方案

语言网关特点
Nginx + LuaOpenResty原始Web开发平台
Nginx + LuaKong社区活跃、成熟度高、Postgres存储、二次开发成本高
Nginx + LuaApache/Apisix借鉴Kong、使用etcd存储、性能更高、二次开发成本低
JavaSpring Cloud AlibabaSpring Cloud生态、社区成熟度高、国内应用广泛

因为作者接触的都为Nginx + Lua方案的网关方案,在后面章节中将通过讲解Nginx、Lua、OpenResty相关的原理概念,最后再讲解及实践Apache/Apisix方面的应用。

Last Updated:
Contributors: isno