4.4.2 从代理到网关

随着微服务架构、容器编排调度等技术的崛起,现代分布式系统已经越来越动态,这就意味着通过静态文件配置方式早已过时。作为分布式系统的入口,七层负载均衡(代理)就需要转换角色,不仅仅作为一个代理,而是要承担提供更多现代化的功能。

把这些功能统一前移某一层独立支持,实现 API Gateway as a Service,让各个服务直接接入,在管理平台上管理,可视化配置等等,这样就实现了一个全局的视图统一管理这些功能。而这就是七层负载均衡的升级 —— 网关(API Gateway)

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

表 4-1

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

这些现代化的网关方案各有各的特点,实现的功能也非常强大,简单列举部分网关功能,以便读者对它「强大功能」有个直观的感受。

  • 协议支持 现代网关系统正在显式添加对更多协议的支持。负载均衡器对应用层协议了解的越多, 就可以处理越多更复杂的事情,包括观测输出、高级负载均衡和路由等等。譬如云原生网关的典型代表 Envoy 显式支持如下七层协议的解析和路由:HTTP/1、HTTP/2、gRPC、Redis、MongoDB、DynamoDB。

  • 动态配置: 服务管理的动态配置包括路由、上游服务(Upstream)、SSL证书、消费者等等,数据的替换和更新不会产生任何中断,从而将线上流量的影响降低到最低。

  • 流量治理:很多微服务架构中,流量治理都需要在七层中进行,譬如超时、重试、限速、熔断、流量镜像、缓存等等。现代网关系统在服务以及流量的管理上可对多业务进行收敛统一处理,降低多套网关的运维成本。

  • 可观测性:互联网快速发展的今天,基础设施与应用的部署构建都发生了极大变化,特别是基于分布式、微服务的体系架构,传统的监控方式已经无法适应云原生的场景。服务治理的可观测性输出是网关系统提供的最重要的特性。系统度量、分布式跟踪以及自定义日志等功能现在几乎是七层负载均衡解决方案的标配。需要指出的是,丰富的可观测数据并不是没有代价的,负载均衡器需要做一些额外的工作才能产生这些数据。但是,这些数据带来的收益要远远大于为产生它们而增加的那点性能损失。

  • 可扩展性:例如典型网关 OpenResty,通过编写可插拔的插件能够轻松地对网关系统实现各种流量处理以及各类自定义功能,譬如流量限速、日志记录、安全检测、故障注入等等。

  • 高可用以及无状态设计:现代网关系统不仅提供数据面实现,还提供控制面实现,二者目标都在朝向无状态设计,可以轻松地实现水平扩展。网关架构整体上也默认高可用,不存在单点故障。

总字数:977
Last Updated:
Contributors: isno