博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
负载均衡(Load Balancing)学习笔记(三)
阅读量:6690 次
发布时间:2019-06-25

本文共 1577 字,大约阅读时间需要 5 分钟。

本文讲述实现负载均衡的常用算法。

轮询法(Round Robin)

轮询法是负载均衡中最常用的算法,它容易理解也容易实现。

轮询法是指负载均衡服务器(load balancer)将客户端请求按顺序轮流分配到后端服务器上,以达到负载均衡的目的。
假设现在有6个客户端请求,2台后端服务器。当第一个请求到达负载均衡服务器时,负载均衡服务器会将这个请求分派到后端服务器1;当第二个请求到害时,负载均衡服务器会将这个请求分派到后端服务器2。然后第三个请求到达,由于只有两台后端服务器,故请求3会被分派到后端服务器1。依次类推,其示意图如图1所示。

图1:轮询法负载均衡

加权轮询法(Weighted Round Robin)

简单的轮询法并不考虑后端机器的性能和负载差异。给性能高、负载低的机器配置较高的权重,让其处理较多的请求;而性能低、负载高的机器,配置较低的权重,让其处理较少的请求。加权轮询法可以很好地处理这一问题,它将请求顺序且按照权重分派到后端服务器。

假设有6个客户端请求,2台后端服务器。后端服务器1被赋予权值5,后端服务器2被赋予赋予权值1。这样一来,客户端请求1,2,3,4,5都被分派到服务器1处理;客户端请求6被分派到服务器2处理。接下来,请求7,8,9,10,11被分派到服务器1,请求12被分派到服务器2,依次类推。这个请求分派的过程可以用图2来表示。

图2:加权轮询法负载均衡

最小连接数法(Least Connections)

即使后端机器的性能和负载一样,不同客户端请求复杂度不一样导致处理时间也不一样。最小连接数法根据后端服务器当前的连接数情况,动态地选取其中积压连接数最小的一台服务器来处理当前的请求,尽可能提高后端服务器的利用效率,合理地将请求分流到每一台服务器。

为什么根据连接数可以合理地利用服务器处理请求呢?
考虑一个客户端请求的处理逻辑较复杂,需要服务器的处理时间较长,由于客户端需要等待服务器的响应,故需要保持与服务器的连接,这样一来,客户端就需要与服务器保持较长时间的连接。
假设客户端请求1,2,3,4,5已被分派给服务器1和服务器2,其分派的情况如图3所示:

图3:最小连接法示意图(1)

此时,服务器上的请求1,请求3已处理完毕,与客户端的连接已断开。而请求2,4,5还在服务器上处理,即服务器还保持与这些请求的客户端的连接。

如果再把请求分派到服务器2,则会导致服务器的请求更多,服务器2的负载更高。如果考虑服务器的连接数,当前服务器1的连接数为1,服务器2的连接数为2,将请求分派到服务器1,则负载相对均衡。采用最小连接数法的分派方法如图4所示:

图4:最小连接法示意图(2)

随机法(Random)

随机法也很简单,就是随机选择一台后端服务器进行请求的处理。由于每次服务器被挑中的概率都一样,客户端的请求可以被均匀地分派到所有的后端服务器上。

源地址哈希法(Source Hashing)

源地址哈希的思想是根据获取客户端的IP地址,通过哈希函数计算得到的一个数值,用该数值对服务器列表的大小进行取模运算,得到的结果便是客服端要访问服务器的序号。采用源地址哈希法进行负载均衡,同一IP地址的客户端,当后端服务器列表不变时,它每次都会映射到同一台后端服务器进行访问。

如果后端服务器是一缓存系统,当后端服务器增加或者减少时,采用简单的哈希取模的方法,会使得命中率大大降低,这个问题可以采用一致性哈希的方法来解决。
关于一致性哈希的介绍,可以参考文件 。

参考资料

    1. 大型网站技术架构——核心原理与安全分析,李智慧著,电子工业出版社

 

注:转载自https://leehao.me

转载于:https://www.cnblogs.com/WinHEC/p/Load_Balancing_Part3.html

你可能感兴趣的文章
Surface体验WS2012中RDS的RemoteFX虚拟桌面
查看>>
因为有你,所以精彩
查看>>
K8S集群中使用Helm管理应用分发
查看>>
<進階&高級>ADT線上視頻&PPT課件
查看>>
Apache 与 Nginx 比较
查看>>
杂文语录积累(二)
查看>>
隔离公司各个部门--虚拟路由器(EBGP)
查看>>
在 SELECT 查询中使用子查询
查看>>
Microsoft Lync Server 2013: 配置SQL服务器数据分发
查看>>
Zabbix 日志监控
查看>>
数据挖掘里的“降维”----从五阶魔方的玩法思考
查看>>
shell脚本实例之Charpter8-9
查看>>
Error polling connection 'qemu:///system': internal error Cannot find suitable emulator for
查看>>
iptables实战
查看>>
valgrind调试CPU缓存命中率和内存泄漏
查看>>
水星三维引擎发布2.0版本 ~友情帮介绍下~
查看>>
内外网访问NAT设置
查看>>
公开课视频-《第03章 部署-IT基础架构》-大企业云桌面部署实战-在线培训-视频(奉献)...
查看>>
数字方舟,末日起航-记2012云计算架构师峰会
查看>>
CocoStudio 1.4.0.1数据编辑器使用
查看>>