什么是负载均衡
负载均衡,它在网络现有结构之上可以提供一种廉价,有效,透明的方法来扩展网络设备和服务器的宽带,并可以在一定程度上增加吞吐量,加强网络数据处理能力,提高网络灵活性和可用性。相当于在网络流中充当“交通指挥官”的角色,在服务器前处理所有服务端和客户端之间的请求,从而最大程度的提高响应速率和容量利用率,同时确保任何服务器都没有超负荷工作。如果单个服务器出现故障,负载均衡的方法会将流量重定向到其余的集群服务器,以保证服务的稳定性。当新的服务器添加到服务器组后,也可以通过负载均衡的方法使其开始自动处理客户端发来的请求
负载均衡常用算法
轮询
轮询为负载均衡中较为基础简单的算法,它不需要配置额外参数,假设配置文件中共有n台服务器,该算法遍历服务器节点列表,并按节点次序每轮选择一台服务器处理请求,当所有节点均被调用过一次后,该算法将从第一个节点开始重新一轮遍历
特点:由于该算法中每个请求按时间顺序逐一分配到不同的服务器处理,因此适用于服务器性能相近的集群情况,其中每个服务器承载相同的负载,但对于服务器性能不同的集群而言,该算法容易引发资源分配不合理等问题
加权轮询
为了避免普通轮询带来的弊端,加权轮询应运而生,在加权轮询中,每个服务器会有各自的weight,一般情况下weight的值越大意味着该服务器性能越好,可以承载更多的请求,该算法中,客户端的请求按权值比例分配,当一个请求达到时,优先为其分配权值最大的服务器
特点:加权轮询可以应用于服务器性能不等的集群下,使资源分配更合理
ip哈希
ip_hash依据发出请求的客户端ip的hash值来分配服务器,该算法可以保证同ip发出的请求映射到同一服务器,或者具有相同hash值的不同ip映射到同一服务器
首先通过将ip地址映射成一个hash值,然后将hash值对tomcat的数量取模,得到tomcat的索引
这样一来只要用户的ip不发生变化,当前用户的会话就能够一直保持
特点:该算法在一定程度上解决了集群部署环境下Session不共享的问题