JAVA小白一枚,技术文章纯粹为了记录和理解学习内容
首先,顾名思义,其实就是说让负载均衡一点。以我目前的水准来说,其实就是类似于淘宝这样子,淘宝幕后的服务器肯定是成千上万个,我们把它叫做计算机集群,淘宝每天的访问量很大,换言之就是服务器承受的压力很大,再换言之就是负载很重。这时候如何让我们的计算机集群里面的每个计算机的负载尽可能均衡,这很重要!这里的负载☞的是用户的请求量
可能上面说的还不是很理解,那我就举个网上很常见的例子吧!
我们在日常生活中经常免不了要去一些比较拥挤的地方,比如地铁站、火车站、电影院、银行等。无论是买票,还是排队入场,这些场所一般都会设置多个服务点或者入口的。如果没有人引导的话,大多数情况下,最近的入口会挤满人。而哪些距离较远的服务点或者入口就宽松很多。
这种情况下,就会大大浪费资源,因为如果可以把这些排队的人很好的分散到各个入口的话会大大缩短排队时间。其实,网站的建设也是一样的。为了提升网站的服务能力,很多网站采用集群部署,就像话剧院有多个入口一样。这时候,就需要一个协调者,来均衡的分配这些用户的请求,可以让用户的可以均匀的分派到不同的服务器上。
现在懂地负载均衡到底是担任什么样的角色了吧!
大家应该都重点OSI七层模型吧!由于负载均衡是在网络传输中做文章的,跟网络传输有关,那么就离不开OSI。而事实上,负载均衡可以根据OSI的层级来分类,比如在应用层做文章则称为七层负载均衡,以此类推。其中最常用的就是四层负载均衡和七层负载均衡。下面我来一一介绍以下各层负载均衡。
二层负载均衡:负载均衡服务器对外提供一个VIP(虚IP),集群中不同的机器采用相同IP地址,但是机器的MAC地址不一样。当负载均衡服务器接受到请求之后,通过改写报文的目标MAC地址的方式将请求转发到目标机器实现负载均衡。
三层负载均衡:和二层负载均衡类似,负载均衡服务器对外依然提供一个VIP(虚IP),但是集群中不同的机器采用不同的IP地址。当负载均衡服务器接受到请求之后,根据不同的负载均衡算法,通过IP将请求转发至不同的真实服务器。
四层负载均衡:四层负载均衡工作在OSI模型的传输层,由于在传输层,只有TCP/UDP协议,这两种协议中除了包含源IP、目标IP以外,还包含源端口号及目的端口号。四层负载均衡服务器在接受到客户端请求后,以后通过修改数据包的地址信息(IP+端口号)将流量转发到应用服务器。
七层负载均衡:七层负载均衡工作在OSI模型的应用层,应用层协议较多,常用http、radius、dns等。七层负载就可以基于这些协议来负载。这些应用层协议中会包含很多有意义的内容。比如同一个Web服务器的负载均衡,除了根据IP加端口进行负载外,还可根据七层的URL、浏览器类别、语言来决定是否要进行负载均衡。
有关负载均衡的工具(软件):市面上有很多开源的负载均衡的工具或软件,基本都是基于前面提到的方案实现的,大多数是工作在第七层和第四层的。Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件。其中LVS是针对第四层;而Nginx和HAProxy是针对第七层。
现在大家都明白了,负载均衡是根据实际情况给计算机分配请求量来最大限度、最合理地利用计算机。那么怎么分配呢?其实是根据算法来算出来怎么分配的。看下图就知道了!