当前位置: 首页 > news >正文

【架构师从入门到进阶】第五章:DNSCDN网关优化思路——第四节:请求链路中代理的作用

【架构师从入门到进阶】第五章:DNS&CDN&网关优化思路——第四节:请求链路中代理的作用

  • 正向代理
  • 反向代理
    • 什么是反向代理
    • 反向代理如何实现
      • 四层反向代理
      • 七层反向代理
      • 什么叫上游?

本篇文章我们来学习代理。

经过我们前面的内容,比如说用户经过我们的DNS、CDN,还有比如说多地址之类的一些方案,请求到达了我们的系统之上。

在这里插入图片描述

用户找到这个系统,其实只是找到了这个系统的一个IP地址,这个系统它不一定是对外提供业务服务的,这么一个系统有可能它只是对外提供一个唯一IP,多个请求到了这个系统之后,还可以把请求分发给不同的小系统,也是做了一次负载均衡。

在这里插入图片描述

那么在这个系统做负载均衡的这个方法上,我们会涉及到一个概念,这个概念就叫做代理。在一般的公司中,是通过反向代理这一步来实现的,将对一个IP地址的请求,分发到后面的多台机器上,这个是反向代理。

那么在我们学反向代理之前,我们先来了解一下什么是正向代理。

正向代理

好多人不理解正向代理和反向代理的区别。什么是正向代理呢?

正向代理就是,用户端设置代理服务器,比如说所有的请求都由代理服务器发出,无法判断代理了多少用户端,这叫做正向代理,画一个图,大家就理解了:

在这里插入图片描述

比如说这有好多个客户端,每个客户端里都配置了一个代理的网络转发。然后有一个代理服务器,这个请求要去访问,他直接请求代理服务器,然后代理服务器代理他们去请求真正的系统。代理,他们去请求真正的系统OK,这个叫正向代理。正向代理关键点在于无法判断代理多少个用户端,因为每个用户端自己去配置这个代理。

我们要记住,正向代理是用户端配置代理。

反向代理

正向的代理说完之后,我们来看反向的代理。

什么是反向代理

那么反向代理是什么呢?反向代理是服务端配置代理。所有的请求,由服务端接收,然后再由代理服务器分发到后面的服务器。我们来画一个图:

在这里插入图片描述

这是一个代理服务器,代理服务器里配置了后面好多个服务器的地址,所有的用户请求,都来请求它,但是代理服务器这边配置了后面好多服务器的地址,然后代理服务器再将这些请求分发到后面的不同的机器上去,这个就叫做反向代理好了。

这样一来,所有的请求呢,都由这么一个服务器来接收,无法判断这台代理服务器代理了多少的后端服务。

我们刚才所说的这种反向代理,它就可以把请求分发到不同的机器上,从而减少每个节点的并发数。而这些节点在外界看来就是一个系统。就是我有好多个节点,只不过前面架了一台代理服务器,请求来的时候,所有的请求都只访问这个服务器,而实际上是请求的后面的多个服务器。对于用户来说,只表现一个IP。

反向代理如何实现

我们来看一下,反向代理是怎么实现。

反向代理的实现手段有很多,根据工作层级的不同,分为两种。一般的我们知道网络有OSI的七层模型,反向代理有四层反向代理或者七层的反向代理,一般是从下往上数就是最高一层是第七层。最低一层物理层,次低一层是数据链路层、网络层、传输层、会话层、表示层,最高一层是应用层。

在这里插入图片描述

每一层向相邻的上层提供一个确定的服务,就是你只调我,我实现某一些功能,然后你做一些业务逻辑,你再向上面提供一些确定的功能。

可以看到一下,如果说我们做四层反向代理应该怎么做呢?

四层反向代理

在传输层,我们就只知道传输层是通过IP端口进行传输的。

越靠近用户层知道的信息越多,越靠近下面知道的信息越少,包括最后最下面物理层那知道的肯定就是一些物理的连接,物理的介质。

越往上面知道的信息越多,那么第四层他知道的信息,比如说IP和端口。如果我们要在这一层做代理,我们就是通过IP和端口,你给我一个IP和端口,我们来把你进行转发。

在这里插入图片描述

七层反向代理

那如果说要做七层代理呢?七层代理就可以用http,那么在http中就会有URL是吧,就会有各种各样的地址,就会有请求的头,请求的正文等等,进行转发。

也就是说,四层做反向代理的话,掌握的信息更少,实现更简单,但是效率更高,因为它越靠近底层,效率越高。

用七层做反向代理的话,可以做到更智能。七层我可以知道http的各种信息;我可以解析cookie;针对不同的cookie,我们进行不同的转发;我们还可以根据请求资源的类型进行转发,比如说请求图片我给你转发到哪里,请求视频我给你转发到哪里。这样的话功能更丰富,但是效率就会更低一些。因为它越靠近上层,它需要处理的这些逻辑就会越多,它虽然知道的信息更多,但是它的效率也会更低下。

在这里插入图片描述

什么叫上游?

实现反向代理,会有一个概念,一个“上游”的概念,什么叫上游?

比如说这是一个代理,代理服务器,我们要代理别人,其实跟我们实际中的做生意的差不多,比如说我代理的一个电脑品牌,那比如说我代理联想,那么联想就是我的上游,别人要找我买电脑,我就去找联想,戴尔,惠普,我代理的这三家。别人找我买电脑,我给你联想,给你惠普,给你戴尔,那么我的上游就是它们三个,它们三个叫上游。

在这里插入图片描述

所以说在nginx,比如说做反向代理的负载均衡服务器nginx,nginx里面就会有一个“upstream”的一个概念。我们的nginx配置的时候肯定会配upstream,这里面配置的就是上游的节点,就是后方的这些信息。

在这里插入图片描述

还有nginx里面有access_by_lua_file,后面写了一个lua的.lua文件,一个lua规则。你就可以根据lua的规则做反向代理。

在这里插入图片描述

相关文章:

  • 设计模式-行为型-责任链模式
  • easy云盘笔记
  • 总结一下Java中的Synchronized同步锁的常见面试题
  • Java基础第14天-坦克大战【1】
  • 【C++修炼之路】C++类与对象:面向对象编程的第一步
  • 【JavaEE】SpringMVC获取HTTP中的元素
  • C# 弃元的使用
  • 决策树-分类
  • 鸿蒙OS特点对测试的影响
  • JVM垃圾回收器深度底层原理分析与知识体系构建
  • DDS技术分享(一)
  • std::ranges::ref_view,std::ranges::owning_view, std::ranges::views::all
  • 【TypeScript】ts在vue中的使用
  • 电脑显示屏亮度怎么调?电脑屏幕亮度调节步骤介绍
  • laravel11设置中文语言包
  • 技术架构和工程架构区别
  • 【论文解读】《C-Pack: Packed Resources For General Chinese Embeddings》
  • 深入探讨K8s资源管理和性能优化
  • 深入解析 Spring 中的 BeanDefinition 和 BeanDefinitionRegistry
  • 链表理论基础
  • 北斗专访|特赞科技范凌:现在AI主要是“说话”,接下来要“干活”了
  • 广州地铁十一号线赤沙车辆段工程高坠事故调查报告公布:1人重伤且漏报
  • 吉林:消纳绿电,“氢”装上阵
  • 万科:存续债券均正常付息兑付
  • 《审判》|“被告”的魅力:K在等什么?
  • 牛市早报|中美经贸高层会谈达成重要共识,取得实质性进展