欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

一文简单理解反向代理和正向代理模型

程序员文章站 2022-03-23 09:22:30
正向代理和反向代理正向代理和反向代理1、代理(Proxy)2、反向代理和正向代理参考正向代理和反向代理1、代理(Proxy)引出代理之前,首先介绍C/S架构,也即是Client-Server的架构。对于请求量非常少的服务,这样的部署不会有什么问题,但如果这个服务请求量上来的时候,这样部署的架构就很有问题了。首先一个很客观的问题:如果单从服务器的物理特性来看,这个服务器就不能支持这么高的请求量。这种情况下,就迫使开发者去把服务迁移到一个CPU更强、内存更高,综合性能更好的服务器。通过更换服务器当...

正向代理和反向代理

1、代理(Proxy)

引出代理之前,首先介绍C/S架构,也即是Client-Server的架构。
一文简单理解反向代理和正向代理模型
对于请求量非常少的服务,这样的部署不会有什么问题,但如果这个服务请求量上来的时候,这样部署的架构就很有问题了。

  • 首先一个很客观的问题:如果单从服务器的物理特性来看,这个服务器就不能支持这么高的请求量。这种情况下,就迫使开发者去把服务迁移到一个CPU更强、内存更高,综合性能更好的服务器。通过更换服务器当然可以解决这个问题。
  • 第二个问题:如果服务Server单节点发生了故障,就必然会影响整个服务,因为对于众多的Client客户端都是连接的一个Server服务端。

基于代理的可横向拓展的C/S架构
一文简单理解反向代理和正向代理模型
在这个部署的架构当中,除了Server节点,还多出了一个叫Proxy的节点,那么这个节点是干嘛的呢?

Proxy的这个节点,它把他接收的所有的请求都转发到他后面的Server节点当中,然后等待Server节点处理请求,再从Server节点取回执行结果返回到Client。所以“Proxy”的这个节点,他实际上不处理任何的请求。

1、服务器性能不足的问题:假设Server节点S1性能到达瓶颈了,不能处理更多的请求了。我们可以添加Server节点S2,同时告诉“Proxy”节点,让他把部分原来转发到S1节点的请求转发到我这里来。这样子通过服务分流减少压力的方法就可以解决原来S1节点性能不足的问题了。

一文简单理解反向代理和正向代理模型
2、单点服务器挂掉了怎么办:还是考虑Server节点S1和S2,两者所能够提供的服务是一样的,假设某一个时候S1挂掉了,这时如果有“Proxy”节点的存在,并且“Proxy”节点能够察觉到S1挂掉了的话,那么让“Proxy”节点把原来要转发给S1节点的请求转发到S2进行处理就可以了,这样子通过服务冗余的方法就可以解决原来S1突然挂掉影响服务的问题。
一文简单理解反向代理和正向代理模型

“Proxy”节点相当于一个中介,或者说是一个代理,代理Client去寻找实际的Server节点去完成服务。这样子的模式在现实生活也非常常见,在买房子的时候,通常由房产中介帮助你完成和卖者之间的手续,而不需要你亲自去处理这些事情,你只需要协调好自己与中介之间的手续就好了,这里的中介,就和我们的“Proxy”节点所做的工作非常类似。

2、反向代理和正向代理

理解了什么是“代理”,离我们理解什么是“反向代理”就只差“反向”两个字了,与“反向”相对的,就是“正向”,本质上来讲,代理都是存在于Client和Server之间,但是由于性质不同,所以也分为这两种.

假设由A、B和C三人,他们之间存在借钱的关系。

对于正向代理,理解起来就是:

1、A需要钱,A知道C由很多钱,想向C借钱
2、但是A和C有矛盾,于是A想到通过B去借C借钱
3、B向C借到钱了,C不知道是A的存在
4、这样B就帮助A借到了Z的钱
一文简单理解反向代理和正向代理模型
在这个过程,B就充当了代理借钱的角色,并且是代替A去借钱的,这样就是正向代理。

接着是反向代理:

1、A需要钱,C有很多钱,A不知道C很多钱
2、A找B借钱
3、B知道C有很多钱
4、B向C借钱,并把借到的钱给A,而没有使用自己的钱借给A
5、A拿到钱以后,以为钱是B的,A不知道C的存在
一文简单理解反向代理和正向代理模型
在这个过程当中,B也充当了代理借钱的角色,不过这次不是代替A去借的,而是用C的钱借给A的,换言之即是代替C将钱借给了A,这就是反向代理。

两者区别

  • 1、服务对象不同
    • 正向代理,代理的是客户端,也就是例子中的A,服务端不知道实际发起请求的客户端
    • 反向代理,代理的是服务端,也就是例子中的C,客户端不知道实际提供服务的服务端
    • 总括:正向代理隐藏真实客户端,反向代理隐藏真实服务端
  • 2、安全模型不同
    • 正向代理允许客户端通过它访问任意网站并且隐藏客户端自身,因此必须采取安全措施以确保仅为授权的客户端提供服务
    • 反向代理都对外都是透明的,访问者并不知道自己访问的是代理,访问者不知道服务节点的存在,认为处理请求的就是代理节点

总而言之,正向代理是从客户端的角度出发,服务于局域网用户,以访问非特定的服务,其中最典型的例子就是*;反向代理正好与此相反,从服务端的角度出发,服务于所有用户,隐藏实际的服务节点,服务节点的架构对用户透明,以代理节点统一对外服务。

参考

1、https://www.zhihu.com/question/24723688/answer/583903276
2、https://www.zhihu.com/question/24723688

本文地址:https://blog.csdn.net/JMW1407/article/details/107353965

相关标签: 分布式架构