随着互联网的发展,高并发的场景越来越多。然而单个tomcat能承受的并发量是有限的,工程师们就通过架设服务器集群来弥补单机并发量瓶颈,所以就有了分布式服务。我们还想每台服务器处理的请求数尽量均衡,所以就有了负载均衡。今天就来聊一聊在负载均衡中举足轻重的LVS。
首先聊一聊tomcat为什么慢
我们知道OSI七层网络模型和四层TCP/IP协议,前者是一种标准和规范,后者是基于此规范的一个实实在在的产品。我们站在通信的角度去审视tomcat。
- tomcat是运行在应用层的一个应用程序,其中又运行着jvm,代码运行于jvm平台之上。指令需要通过jvm翻译成操作系统认识的样子。
- 网络中的最高层,意味着每一次发出去或者是接收到的数据,都要经过最多层数的包装和解封。
- 应用层是用户态,传输层及以下被封装在内核态。向其他服务器发送数据要涉及到用户态和内核态的转换。
我们可以看到tomcat慢的原因最主要就是处于通信模型的最高层。
数据包级别的负载均衡服务器–LVS
相对于tomcat运行在通信模型的最高层,LVS是一个四层负载均衡服务器。意思是它不和客户端握手,只是负责转发数据包,因此它的速度要远远快于七层负载均衡服务器nginx(本文不谈nginx)。这个特性就要求它后面连接的多个真实服务器是镜像的。