思路是 DNS 解析同一个域名时可以返回不同的IP地址。
用来实现地理级别的均衡,例如,北方用户访问北京机房、南方用户访问深圳机房。
优点:
缺点:
通过单独的硬件设备实现负载均衡,典型设备例如 F5、A10。
优点:
缺点:
通过软件实现,例如我们熟悉的 Nginx(7层负载均衡) 和 LVS(4层负载均衡)。
和硬件负载均衡相比,性能差了很多,Nginx 能支持5万/秒,而F5是百万级,但价格也便宜了很多。
优点:
缺点:
DNS、硬件、软件这3中方式可以组合使用,基本原则:
负载均衡系统接收到请求后,按照顺序轮流分配给服务器。
这种方式非常简单,只管按顺序分配,至于服务器当前负载情况、硬件能力等都不关心,只要服务器还能工作,就可以分配,除非服务器挂了。
是轮询方式的一种改进,轮询方式是无差别分配,但实际服务器的处理能力是有差异的,所以需要区别对待。
为服务器设置权值,权值高的就多分配点。
将任务分配给当前负载最低的服务器。
例如 LVS 可以根据“连接数”判断服务器状态,NGINX 可以根据“HTTP请求数”来判断。
这种方式比轮询高级很多,可以感知服务器的状态了,但其复杂度也大大提高了,要收集统计服务器的负载信息。
优先将任务分配给处理速度最快的服务器,来达到最快响应客户端的目的。
此方式也是感知服务器的状态,标准是响应时间。
需要收集分析服务器的响应时间,这个工作本身消耗也不小,所以采用采样的方式,不统计所有任务的响应时间,统计一个周期(例如 10秒/1分钟/5分钟)内的状态。
优缺点与 负载最低优先 相同。
对请求中的关键信息(如IP)进行hash计算,hash值相同的请求分配到同一台服务器,例如业务中希望同一用户的请求都由同一台服务器来处理。
内容整理自《从0开始学架构》
点击?阅读原文查看文章列表