两者的演进关系

反向代理和网关都是服务演进过程中的产物
截屏2021-12-03 上午11.17.54.png

Web 时代

应用大多以 web 网站的形式呈现,主要为前置反向代理,其作用为:

  • 反向路由
  • 负载均衡
  • 安全认证
  • 日志监控
  • 限流熔断
  • 缓存
  • 。。。

此阶段网站服务的升级频率不高,反向代理往往采用静态配置的方式,由运维团队单独配置

微服务时代

出现了大量提供 API 的服务,更新频率高,对路由,安全,动态配置的要求高。
传统反向代理静态配置不灵活,缺乏动态配置的能力,传统运维配置效率低下,API 网关应运而生,API 网关作用跟反向代理大同小异,但是是面向 API 和微服务的,具有动态配置能力。反向代理能够做的,网关也都能做,但是从架构上来看有两套东西,运维成本较高

云原生时代

提出了更高要求,不仅要求网关动态可配置,还要求动态可编程,出现统一代理,既可以当反向代理用也可以当网关用

网关是否需要分集群部署

截屏2021-12-03 上午11.31.26.png
截屏2021-12-03 上午11.39.06.png
统一网关需要解决一些问题:

  1. web 应用返回信息是个 html 页面,微服务是 json 字符串,需要分别处理
  2. 认证方式可能有差异,需要引入区分逻辑

在这种情况下,可以分成两套统一网关,分集群处理。web 和单页应用躲在一套网关后面,微服务躲在一套网关后面。
是否需要分集群需要看团队和业务规模
截屏2021-12-03 上午11.48.30.png