nginx:负载均衡、四层代理、七层转发

学习自:【精选】Nginx教程(小白必看,看了必会,不看血亏),-CSDN博客

1、VS

VS是Virtual Server的简写,是一个虚拟的服务器集群系统

VS主要用于多服务器的负载均衡。它工作在传输层,可以实现高性能、高可用的服务器集群技术。

它可以把许多低性能服务器组合为一个超级服务器,并且提供了多种负载均衡方法。

LVS通过控制IP负载均衡。IPVS是其具体的实现模块。

相比nginx,LVS具有更强的抗负载能力,性能高,对于内存和CPU资源消耗较低。

LVS工作在网络层,流量由OS内核控制;nginx工作在应用层,针对的是HTTP应用实施分裂策略。

2、四层、七层代理

这里的层是指OSI 7层网络模型:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。

4层:传输层的 tcp / udp。

7层:应用层,通常是http。

1)代理原理

4层代理(NAT)

4层用的是NAT(Network Address Translation,网络地址转换)。当请求进入的时候,nginx会修改数据包中的目标、源IP和Port,然后再把数据包发给目标服务器,服务器处理完成之后,nginx再做一次修改,返回给请求的客户端。

7层代理

读取并解析http请求内容,再根据具体内容(url、参数、cookie、请求头)转发到相应的服务器。

转发过程:建立与目标机器的连接,再转发请求,收到相应数据再转发给请求C端。

2)优缺点对比

性能

理论上4层要比7层更快,因为7层还需要解析数据包的具体内容,需要消耗额外CPU。

但是nginx具有强大的网络并发处理能力,对于一些慢连接情况,nginx可以先将网络请求数据缓冲完毕再一次性转发给上游server,这样对于上游网络并发处理能力弱的服务器(如tomcat),就相当于慢连接变为快连接,从而节省网络数据缓冲时间,提供并发性能

灵活性

由于4层代理用的是NAT,因此nginx不知道请求的具体内容,所以nginx无法针对内容作出反应。而7层代理则能根据请求内容(url,参数,cookie,请求头)做很多事情,例如:

  • 动态代理:根据不同url转发到不同的服务器;
  • 风控:屏蔽外网IP请求某些敏感url;根据参数屏蔽某些刷单用户;
  • 审计:在nginx层记录请求日志。

结论

由于现在的机器CPU性能很好,因此4层代理并没有明显的性能优势,而7层代理在业务层面优势显著,因此一般直接用7层代理就行。

 

posted @ 2023-10-23 15:08  ShineLe  阅读(484)  评论(0编辑  收藏  举报