两者的演进关系
Web 时代
应用大多以 web 网站的形式呈现,主要为前置反向代理,其作用为:
- 反向路由
- 负载均衡
- 安全认证
- 日志监控
- 限流熔断
- 缓存
- 。。。
此阶段网站服务的升级频率不高,反向代理往往采用静态配置的方式,由运维团队单独配置
微服务时代
出现了大量提供 API 的服务,更新频率高,对路由,安全,动态配置的要求高。
传统反向代理静态配置不灵活,缺乏动态配置的能力,传统运维配置效率低下,API 网关应运而生,API 网关作用跟反向代理大同小异,但是是面向 API 和微服务的,具有动态配置能力。反向代理能够做的,网关也都能做,但是从架构上来看有两套东西,运维成本较高
云原生时代
提出了更高要求,不仅要求网关动态可配置,还要求动态可编程,出现统一代理,既可以当反向代理用也可以当网关用
网关是否需要分集群部署
统一网关需要解决一些问题:
- web 应用返回信息是个 html 页面,微服务是 json 字符串,需要分别处理
- 认证方式可能有差异,需要引入区分逻辑
在这种情况下,可以分成两套统一网关,分集群处理。web 和单页应用躲在一套网关后面,微服务躲在一套网关后面。
是否需要分集群需要看团队和业务规模