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层代理就行。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
2020-10-23 MySQL:指令
2020-10-23 MySQL:修改MySQL登录密码
2020-10-23 MySQL:Authentication method 'caching_sha2_password' is not supported