lvs02-lvs模型推导

文章讨论了在高并发场景下,为何Tomcat作为负载均衡器效率较低,因为其涉及应用层交互和用户态内核态的转换。LVS的NAT模型被提出,它在数据包转发层面工作,避免握手过程,提高效率。然而,S-NAT模型可能导致服务器带宽成为瓶颈和算力消耗。为解决此问题,文章提到了Dr模型作为优化方案。
摘要由CSDN通过智能技术生成

前置:高并发意味着后端服务不止一台,上文的百度也不会只有一台机器,这时候就需要负载均衡技术

 压力现在给到负载均衡器这边,因此,负载均衡器必要要具备快,快速进行数据包的转发,不与源ip进行握手

思考一个问题:大家有没有这样的想法?你一个经常写业务代码的都比较慢了,你中间再加一个很少写业务代码的领导,效率能提升吗?

因此,我们要分析的,为什么Tomcat会比较慢?

注意:这里不是反向代理,这里并没有发生握手以及挥手的动作

假设我们使用Tomcat作为的负载均衡器的话,Tomcat是应用层的应用,与Tomcat进行交互的话,意味着,必须要进行建立连接,以及分手的过程,另外,上文讲到内核态与用户态,Tomcat的运行是在jvm虚拟机只上的,数据的传输,必须要经过的jvm虚拟机再与kernel进行交互,涉及到用户态内核态的转换,效率比较低下

如果我们只做数据包的转发,不进行握手的话,效率有没有可能会大幅度提高,结合上文的五层模型来看,数据包的转发在网络层以及数据链路层,这时候还没有进行拆包,看不到用户的真实域名,这时候要求后端服务是镜像的。必须要一样,看不到URL的话,数据包转发到不同服务器必须要得到相同反应

负载均衡器不能和客户端进行握手,握手了之后又会比较慢

如上图,经过上文的过程之后,我们的数据包到了路由器的位置,下一跳就是负载均衡器,假设均衡器能够直接将数据包在这里进行转发到后端服务,这时候,负载均衡器有没有与用户的请求建立tcp连接?效率是否有提升

lvs  nat模型

 

1.对客户端来说,服务端是透明的,因此对于客户端来说,访问都是访问VIP  cip-vip

2.客户端会发送一个cip到VIP的数据包,这个数据包一定要负载到server1 server2

3.我们现在思考一个问题,server1或者server2收到cip到VIP的数据包之后,会进行处理吗?

  不会,发来的数据包,server1或者server2不会进行处理,为什么不会进行处理?

  我们看看我们实际上网的过程

ip地址不能重复,因此即使在局域网环境下,ip地址也是不能重复

假设,我们的现在有两台电脑,同时要访问百度,一台电脑的ip地址192.168.1.6 一台是192.168.1.8 同时访问百度,使用的端口号都是12121,如下图所示:

 我们来分析一下这个过程,看下会有什么问题:

1、client将数据包发送给路由器192.168.1.1

2.路由器将局域网地址转换成6.6.6.6的公网ip地址发送给百度

3.百度返回数据给6.6.6.6

4.如果百度同时返回数据给192.168.1.6:12121、192.168.1.8:12121,不能实现

实际上这个过程,真实的数据包是由6.6.6.6这个ip发出去的,在这个过程中,是由6.6.6.6与8.8.8.8进行通信,百度在处理完成之后,再数据包回传的时候,无法找到源头

整个过程变成了如下过程:

路由器必须要再准备一张表:

路由器随机生成一个端口号,记录端口号与源ip的映射关系,在进行ip替换的时候,不光进行ip替换,同时进行端口号的替换,变成如下过程:

 

因此,回答了server1  server2不能处理数据包的过程,我们要进行通信的时候,要进行通信,就必须将cip-vip替换成cip-rip

 在进行的通信的时候,我们修改的是源ip地址,因此这种也会叫做S-NAT

S-nat的弊端:

一般情况下,客户端发送给服务端数据量比较小,服务端返回的数据量相对较大,网络不对称

1.瓶颈,服务器带宽成为瓶颈

2.算力消耗大,必须要进行地址转换,来回都需要

优点:可以实现负载均衡

为了解决这个问题,实现传输性能最大,带宽利用最大

Dr模型出现了,见lvs03

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值