负载均衡算法

原文链接:https://blog.csdn.net/FengGu946/article/details/126090365

所谓负载均衡算法就是决定当前客户端请求匹配到目标服务器集群中的具体哪一个节点,常见的负载均衡算法有:

轮询算法:多台服务器按照顺序轮询的方式进行负载,这样每个服务器够可以获取到相同的请求次数。
随机算法:根据随机算法,获得一个目标服务器地址,由于该算法具有随机性,因此每台服务器获得的请求数量不一定均衡。
一致性哈希算法:对应具有相同的hash码的请求,永远发送到同一台目标节点上。
最小连接数:根据目标服务器的请求数量来决定请求的分发权重,也就是目标服务器的集群中请求更少的节点将会获得更多的请求,这是一种负载均衡比较好的策略,真正的能够目标服务器的请求均衡。

如何实现负载均衡
方法一:基于DNS实现负载均衡
在DNS服务器上针对某个域名做多个ip映射,当用户访问某个网站时,会先通过DNS服务器进行域名解析,返回得到一个ip地址,然后再访问该ip,这样就实现了目标集群的请求分发。DNS也可以根据不同的地域分配就近的ip,比如郴州的小伙伴能够得到湖南范围内就近的ip,实现就近访问原则,从而缩短通讯距离提升整个网站的请求效率。

优点:配置简单、实现成本低、无需额外的开发和维护成本。
缺点:由于DNS多级缓存的特性,当我们修改DNS配置时会因为缓存导致ip变更不及时,从未影响负载均衡的效果。
方法二:基于硬件实现负载均衡
硬件负载设备我们可以简单的理解为一个网络设备,类似于网络交换机,它的性能比较好,每秒能够处理百万级别的请求,同时也支持多种负载均衡的算法,我们可以灵活的配置不同的负载均衡策略,它还具有防火墙等安全功能,更重要的是硬件负载是商业化的产品,有专业的售后支持,所以企业不需要花精力来维护硬件设备,F5这样的设备就是比较常用的硬件设备,由于硬件负载的价格比较贵,一般会应用在一些大型银行、政府、电信等企业。

方法三:基于软件实现负载均衡
所谓软件负载就是通过一些开源的软件或者商业软件来完成负载均衡的功能,常见的软件负载技术有:Nginx、LVS、HAProxy等,目前互联网企业绝大部分还是采用软件负载均衡,主要原因是:免费(企业不需要投入较高的硬件成本)、开源(不同的企业对于负载均衡的需求有所差异,所以可以基于开源软件做二次开发)、灵活性高。

上述三种方式没有好坏之分,只有是否合适,企业可以根据自己的需求采用不同的负载均衡方案。
1
负载均衡的作用范围
负载均衡是作用在网络通信层面来实现请求的分发的,而在网络架构中基于OSI的模型又称为七层网络模型:

也就意味着我们可以在网络的某些分层上去做请求的分发处理,因此可以根据这样的特性对应负载均衡的作用范围可以分为:二层负载、三层负载、四层负载和七层负载。

二层负载是基于mac地址的请求分发,一般采用虚拟mac的方式来实现,服务器收到请求后,通过动态分配后端服务器的实际mac地址,去进行响应从而实现负载均衡。
三层负载是基于ip层的负载,一般需要通过虚拟ip来实现,外部请求通过访问虚拟ip,服务器端收到请求之后根据户端实际的ip地址去做分发。
四层负载是通过请求报文中的目标地址和端口来进行负载的,Nginx、LVS、F5都是可以实现四层负载的。
七层负载是基于应用层的负载,也就是服务器端可以根据http中的请求中的报文信息来决定请求分发到哪台服务器上,可以根据cookie、消息体、RequestHeader等信息去做分发。


 

你可能感兴趣的:(负载均衡,服务器,java)