高并发负载均衡:网络协议原理(二)

一、Tomcat为什么慢(客户端和服务端的通信)

  1. 因为Tomcat(nginx等也是一样)是存在应用层的,在网络连接中是最末端的层,处于用户态中,对应用层通信需要先走完下面的物理层-链路层-网络层-传输控制层,进行了下一跳、节点转换、三次握手之后再让内核从内核态切换到用户态才找到了应用层的Tomcat
  2. 因为Tomcat是基于java语言开发,跑在JVM上,JVM相当于在用户空间中又虚拟了一块空间,需要内核切到用户态后再切到JVM中再去找Tomcat,这也是为什么跟nginx之类的网络性能为什么不一样

二、负载均衡服务器(LVS)

  1. 模型
    高并发负载均衡:网络协议原理(二)_第1张图片
      如上图,客户端和服务端的端点程序要通信,并发压力大,中间加了一个负载均衡层,三次握手是不通过他的,直接两边握手,客户端的数据包到了负载均衡服务器这里走下面三层,不动数据包,在自己的传输控制层偷窥一下发送的IP地址信息的包内容,如果是那个需要的就发出去,不需要就自己留着,自己实际上不做任何对包的处理,实际上客户端和服务端是感受不到负载均衡服务器这里的,以为就是个网线。
    负载均衡服务器是没有请求上限的,是四层的所以不知道发送的数据包内容是啥(比如发了个字符串啥的),而nginx是七层的,需要握手所以官方说有最多5W客户端连接上限,所以一般客户端先连负载均衡服务器,先Hold住大量流量,再通过大量nginx负载均衡代理到多个tomcat。
    高并发负载均衡:网络协议原理(二)_第2张图片
  2. 实现LVS负载均衡
    下图为NAT模式(基于三层的)(三层是网络层):
      D-NAT,红色的为缺点。优点是可以实现负载均衡了。
      来去数据包都需要负载均衡服务器的转向(客户端只知道CIP到VIP,到了负载均衡服务器的VIP后翻译为CIP要发给RIP,然后返回RIP要给CIP经过负载均衡服务器翻译为VIP给CIP),非对称一般讲的是家里上传比较慢,下载比较快,6m的网出入方向的带宽不同,不是6/2(早期电话线上网就是这样)。
      基于三层也就是数据包中的IP地址在每跳时候都变。
    高并发负载均衡:网络协议原理(二)_第3张图片
      解决:如果返回数据包不经过负载均衡服务器,那就减少了算力,减少带宽消耗。
      下图为DR模式(直接路由模型)(基于二层的)(二层是链路层):
      server中的VIP隐藏起来不告诉别人,大家只知道负载均衡服务器有个VIP。
      从负载均衡服务器的VIP到server的RIP,在负载均衡服务器端给数据包加工加一个指向对应server的MAC地址,因为从客户端过来的数据包是CIP->VIP,自己的负载均衡服务器里面有VIP所以数据包以为这就是终点会在这停留,但是强行加入对应server的mac地址让他出去。
    高并发负载均衡:网络协议原理(二)_第4张图片
      基于二层就是每跳时数据包里IP地址不变,变MAC地址。
    下图为TUN隧道模式:
    高并发负载均衡:网络协议原理(二)_第5张图片
      负载均衡服务器中在CIP到VIP的数据包外面添加一层DIP到RIP,这样负载均衡服务器和server服务器就不用住在一个局域网内了,DIP->RIP会在网络上跳到server端,server端只需要拆开包装就可以看到客户端发送的数据包了,处理之后跟DR模型一样变为VIP->CIP直接返回给客户端即可。
      模型的搭建在下篇之中

三、补充知识
高并发负载均衡:网络协议原理(二)_第6张图片
  上图中192.168.1.1是私有地址,在互联网上是看不到的,6.6.6.6是公有地址,是唯一的,是运营商给分配的,花钱买他们的服务的时候会分配一个网上唯一的地址。

你可能感兴趣的:(高并发负载均衡:网络协议原理(二))