【架构设计】负载均衡方式有哪些?
动态算法,主要根据集群节点当前的连接数来决定分发给哪个节点,当请求到达某个节点还未响应时,此时HTTP连接处于未断开的状态,负载均衡器将新进来的请求,分发较多的请求给当前保持连接数较少的机器,分发较少的请求给当前保持连接数较多的机器,可以根据服务器实际情况来分配请求,可以避免大量耗时请求分发到A服务器,而耗时较少的请求分发到B服务器,造成虽然两个服务器接到的请求数一样,但A服务器压力过大而B服务器
负载均衡
根据网络的七层模型,可以从二层、三层、四层、七层进行负载。
二层负载:通过MAC地址进行负载,一般使用虚拟MAC地址,服务器提供一个虚拟MAC地址,接收到请求后,将请求转发给后端其他应用服务器进行负载。
三层负载:通过IP地址进行负载,一般使用虚拟IP地址,服务器提供一个虚拟IP地址,接收到请求后,将请求转发给后端其他应用服务器进行负载。
四层负载:通过请求报文中的目标地址和端口进行负载,服务器提供一个请求地址,接收到请求后,将请求转发给后端其他应用服务器进行负载。
七层负载:可以通过应用层HTTP请求中的报文信息来决定请求负载到哪一台服务器上,例如/user/*请求分发到A服务器,/order/*请求分发到B服务器。
DNS负载
原理是当我们通过域名访问时,会通过DNS服务器进行域名解析,进而拿到服务器的IP地址,当解析出多个IP地址时,DNS会随机分配一个IP地址,实现负载均衡的效果,除此之外,还能通过请求来源的地域,分配就近的IP,提高访问速度。
优点:操作简单,实现成本低,可根据地域分配IP实现加速。
缺点:负载规则不够灵活,由于DNS本身多级缓存的机制,当我们修改DNS配置的时候,缓存IP更新可能有延迟。
硬件负载
常见的有F5硬件负载均衡器,类似于一个交换机,可达到每秒百万级的流量,有专业级的防护,例如F5公司的Big-IP设备,支持多种负载规则,这种设备一般用于安全性要求较高的大型银行、政府等性质的业务场景,成本较高。
优点:性能好,能承载大量流量访问,安全性高。
缺点:价格昂贵,对小企业来说不划算。
软件负载
常见的有Nginx,部署于一台服务器上的Nginx负责接收请求,将接收到的请求按照负载均衡规则负载到其他应用服务器上,性能取决于所部署的服务器。
优点:负载规则灵活,免费,适用于中小企业。
缺点:安全性与性能没有硬件负载器好。
负载规则
常见的负载均衡算法有:
1.最快响应时间:
动态算法,根据集群中服务器的响应时间来衡量机器的负载情况,分发较多的请求给负载均衡器获取到的响应更快的服务器,将较少的请求分发给响应延迟更高的服务器。
2.最小连接数:
动态算法,主要根据集群节点当前的连接数来决定分发给哪个节点,当请求到达某个节点还未响应时,此时HTTP连接处于未断开的状态,负载均衡器将新进来的请求,分发较多的请求给当前保持连接数较少的机器,分发较少的请求给当前保持连接数较多的机器,可以根据服务器实际情况来分配请求,可以避免大量耗时请求分发到A服务器,而耗时较少的请求分发到B服务器,造成虽然两个服务器接到的请求数一样,但A服务器压力过大而B服务器压力较小的问题。
3.一致性哈希:
静态算法,根据请求的IP地址或其他信息计算一个哈希值,再用这个哈希值对集群的节点数进行取模,决定该请求分发到哪一台机器上,这种算法可以保证同一台机器每次请求都分发到一台服务器上,对于需要保持session会话的应用来说是一种负载均衡下的解决方案,缺点是一个节点故障时,其他请求哈希后会将请求分发到另外的节点,无法根据集群服务器的实际压力情况来进行分发。
4.轮询:
静态算法,按照集群节点数量轮流依次分发。
5.随机:
静态算法,随机分发到集群节点中。
6.加权轮询或加权随机:
静态算法,对某些节点进行加权,加权轮询时,权重高的节点分发更多的请求,加权随机时,权重高的节点有更高的概率被分发到请求,一般对集群中性能更好的节点加权,使其接收更多的请求。
更多推荐
所有评论(0)