尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

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

【架构师从入门到进阶】第五章:DNSCDN网关优化思路——第四节:请求链路中代理的作用 【架构师从入门到进阶】第五章DNSCDN网关优化思路——第四节请求链路中代理的作用正向代理反向代理什么是反向代理反向代理如何实现四层反向代理七层反向代理什么叫上游本篇文章我们来学习代理。经过我们前面的内容比如说用户经过我们的DNS、CDN还有比如说多地址之类的一些方案请求到达了我们的系统之上。用户找到这个系统其实只是找到了这个系统的一个IP地址这个系统它不一定是对外提供业务服务的这么一个系统有可能它只是对外提供一个唯一IP多个请求到了这个系统之后还可以把请求分发给不同的小系统也是做了一次负载均衡。那么在这个系统做负载均衡的这个方法上我们会涉及到一个概念这个概念就叫做代理。在一般的公司中是通过反向代理这一步来实现的将对一个IP地址的请求分发到后面的多台机器上这个是反向代理。那么在我们学反向代理之前我们先来了解一下什么是正向代理。正向代理好多人不理解正向代理和反向代理的区别。什么是正向代理呢正向代理就是用户端设置代理服务器比如说所有的请求都由代理服务器发出无法判断代理了多少用户端这叫做正向代理画一个图大家就理解了比如说这有好多个客户端每个客户端里都配置了一个代理的网络转发。然后有一个代理服务器这个请求要去访问他直接请求代理服务器然后代理服务器代理他们去请求真正的系统。代理他们去请求真正的系统OK这个叫正向代理。正向代理关键点在于无法判断代理多少个用户端因为每个用户端自己去配置这个代理。我们要记住正向代理是用户端配置代理。反向代理正向的代理说完之后我们来看反向的代理。什么是反向代理那么反向代理是什么呢反向代理是服务端配置代理。所有的请求由服务端接收然后再由代理服务器分发到后面的服务器。我们来画一个图这是一个代理服务器代理服务器里配置了后面好多个服务器的地址所有的用户请求都来请求它但是代理服务器这边配置了后面好多服务器的地址然后代理服务器再将这些请求分发到后面的不同的机器上去这个就叫做反向代理好了。这样一来所有的请求呢都由这么一个服务器来接收无法判断这台代理服务器代理了多少的后端服务。我们刚才所说的这种反向代理它就可以把请求分发到不同的机器上从而减少每个节点的并发数。而这些节点在外界看来就是一个系统。就是我有好多个节点只不过前面架了一台代理服务器请求来的时候所有的请求都只访问这个服务器而实际上是请求的后面的多个服务器。对于用户来说只表现一个IP。反向代理如何实现我们来看一下反向代理是怎么实现。反向代理的实现手段有很多根据工作层级的不同分为两种。一般的我们知道网络有OSI的七层模型反向代理有四层反向代理或者七层的反向代理一般是从下往上数就是最高一层是第七层。最低一层物理层次低一层是数据链路层、网络层、传输层、会话层、表示层最高一层是应用层。每一层向相邻的上层提供一个确定的服务就是你只调我我实现某一些功能然后你做一些业务逻辑你再向上面提供一些确定的功能。可以看到一下如果说我们做四层反向代理应该怎么做呢四层反向代理在传输层我们就只知道传输层是通过IP端口进行传输的。越靠近用户层知道的信息越多越靠近下面知道的信息越少包括最后最下面物理层那知道的肯定就是一些物理的连接物理的介质。越往上面知道的信息越多那么第四层他知道的信息比如说IP和端口。如果我们要在这一层做代理我们就是通过IP和端口你给我一个IP和端口我们来把你进行转发。七层反向代理那如果说要做七层代理呢七层代理就可以用http那么在http中就会有URL是吧就会有各种各样的地址就会有请求的头请求的正文等等进行转发。也就是说四层做反向代理的话掌握的信息更少实现更简单但是效率更高因为它越靠近底层效率越高。用七层做反向代理的话可以做到更智能。七层我可以知道http的各种信息我可以解析cookie针对不同的cookie我们进行不同的转发我们还可以根据请求资源的类型进行转发比如说请求图片我给你转发到哪里请求视频我给你转发到哪里。这样的话功能更丰富但是效率就会更低一些。因为它越靠近上层它需要处理的这些逻辑就会越多它虽然知道的信息更多但是它的效率也会更低下。什么叫上游实现反向代理会有一个概念一个“上游”的概念什么叫上游比如说这是一个代理代理服务器我们要代理别人其实跟我们实际中的做生意的差不多比如说我代理的一个电脑品牌那比如说我代理联想那么联想就是我的上游别人要找我买电脑我就去找联想戴尔惠普我代理的这三家。别人找我买电脑我给你联想给你惠普给你戴尔那么我的上游就是它们三个它们三个叫上游。所以说在nginx比如说做反向代理的负载均衡服务器nginxnginx里面就会有一个“upstream”的一个概念。我们的nginx配置的时候肯定会配upstream这里面配置的就是上游的节点就是后方的这些信息。还有nginx里面有access_by_lua_file后面写了一个lua的.lua文件一个lua规则。你就可以根据lua的规则做反向代理。
返回列表