Day913.反向代理和网关是什么关系 -SpringBoot与K8s云原生微服务实践

Posted 阿昌喜欢吃黄桃

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Day913.反向代理和网关是什么关系 -SpringBoot与K8s云原生微服务实践相关的知识,希望对你有一定的参考价值。

反向代理和网关是什么关系

Hi,我是阿昌,今天学习记录的是关于反向代理和网关是什么关系的内容。

一、反向代理

反向代理 是一种网络技术,用于将客户端的请求转发到一个或多个服务器上,并将响应返回给客户端。与正向代理不同,反向代理隐藏了真实服务器的身份和网络地址,使得客户端无法直接访问服务器。

反向代理通常位于服务器集群的前端,用于接收来自客户端的请求,并根据预定的规则将请求路由到适当的后端服务器。这样可以实现负载均衡、高可用性、安全过滤等功能。此外,反向代理还可以缓存静态内容以加快网站的访问速度,减轻后端服务器的负载。

一些常见的反向代理软件包括nginx、Apache、HAProxy等。


二、网关

API网关(API Gateway)是一个位于客户端和后端服务之间的服务器,用于管理和公开API(应用程序接口)。

API网关充当了客户端和后端服务之间的代理,负责路由请求、鉴别身份、监控使用情况、限流、缓存、加密、协议转换等功能。

通过API网关,客户端可以使用统一的API终端点来访问后端服务,而无需了解每个服务的具体实现细节。

同时,API网关可以提供多种安全机制,例如身份验证、授权、防火墙和DDoS攻击防护等。

API网关可以对请求进行路由和转换,使得客户端和服务端之间的交互更加灵活和高效。

此外,API网关还可以监控API的使用情况,收集数据并生成报告,以便开发人员和管理人员了解API的使用情况和性能状况,帮助他们更好地优化API设计和管理。

常见的API网关包括Amazon API Gateway、Apigee、Kong等。


三、网关的演变流程

反向代理网关 都是网站架构演进出来的产物。

演进过程如下图所示:

web时代,web1.0和web2.0时代的应用主要以web网站形式呈现,大多都采用前置反向代理,主要作用是反向路由和负载均衡,也承担安全认证和日志监控、限流熔断或缓存等功能,代表的技术产品有:nginx、haproxy,网站的升级频率并不是特别高,反向代理一般采用静态配置的方式,或有运维团队单独配置。

来到web3.0和微服务的时代,应用的形态发生了很大的变化,出现了大量提供API的服务,因为API的升级和更新的频率很高,对路由安全配置的能力要求很高,就出现了两个问题:

  • 这时候传统静态反向代理的方案就不够灵活,缺乏动态配置能力
  • 传统运维配置的方式效率低下,研发人员无法做到自助的配置

为了去解决如上的矛盾,API网关作为一个补充就运营而生。
API网关和反向代理的功能其实是大同小异的,不过主要面向API和微服务的,最主要的是面向研发人员更加自助优秀灵活的动态配置能力。

反向代理和API网关是大同小异的,反向代理能做的,那API网关基本也是可以做的,最多就需要扩展一下。

但对应架构上存在两套东西,看起来是比较变扭的,而且运维的成本也比较高。

另外在云原生时代,针对服务的要求有了更高的要求,对网关要求动态可配置,还要求动态可编程。

所以在业界又出现了反向代理和网关有融合的趋势,称之为统一代理,其又可以作为反向代理使用,也可以作为API网关使用。

网关主要给微服务/api用,偏向开发人员,反向代理主要面向传统静态web应用,偏向运维。未来趋势是DevOps+网关和反向代理再次融合。


四、反向代理和网关是什么关系

反向代理和网关都是位于客户端和后端服务之间的中间件,用于管理和转发请求。它们之间的关系可以理解为网关是反向代理的升级版

反向代理主要用于将客户端的请求转发到后端服务器上,并将响应返回给客户端。它可以隐藏后端服务器的身份和网络地址,实现负载均衡、高可用性、安全过滤等功能。

而网关则更加复杂,它不仅具有反向代理的功能,还能对请求进行转换、路由、过滤、监控和管理。API网关是一种特殊的网关,专门用于管理和公开API。

因此,可以认为API网关是一种更加高级的反向代理,它不仅提供了反向代理的基本功能,还具有更加丰富和复杂的功能,例如API管理、安全鉴别、流量控制、缓存、转换等。


五、总结

反向代理网关 都是网站架构演进出来的产物。

反向代理和API网关都是中间件技术,用于管理和转发请求。反向代理主要用于将客户端请求转发到后端服务器上,并将响应返回给客户端,可以实现负载均衡、高可用性、安全过滤等功能。而API网关则是一种更加高级的网关,它不仅提供反向代理的基本功能,还具有更加丰富和复杂的功能,例如API管理、安全鉴别、流量控制、缓存、转换等。API网关专门用于管理和公开API,可以提供统一的API终端点,便于客户端访问和后端服务的管理。


以上是关于Day913.反向代理和网关是什么关系 -SpringBoot与K8s云原生微服务实践的主要内容,如果未能解决你的问题,请参考以下文章

反向代理和网关有啥区别? [复制]

API(网关)提供的反向代理和Service Fabric有啥区别?

Node.js API 网关和 nginx 作为反向代理

使用 NodeJS 实现反向代理

使用 Spring 云网关和 Nginx 作为反向代理的网关超时

nginx是什么,如何使用